2013-12-02 2 views
0

Есть ли формульный способ возврата в начало исходного файла после достижения ссылочной ячейки (а не VBA)? Например:Возврат к началу исходных данных в excel

 A  B 
    1 001 63001210100 
    2 001 63001210101 
    3 001 63001210102 
    4 001 63001210103 --end of source file 
    5 002    --should be 63001210100 again  
    6 002 
    7 002 
    8 002 

я в основном вытягивать из другой таблицы (исходный файл), и данные достигли конца. Однако мне нужно снова повторить данные с начала, когда столбец А изменился. Например, колонка A находится в текстовом формате.

Я знаю, что могу перейти к B5 и ссылаться на него на B1, но это делает вещи уродливыми, потому что исходный файл может измениться по размеру. Есть ли формула, которая может вытащить из исходных данных в конец, а затем вернуться к началу на основе изменения значения в другой ячейке?

ответ

0

Лучшее, что я мог придумать, состоит из INDEX, ROW и MOD вместо OFFSET. Вероятно, это будет лучше, чем мой первый ответ.

=INDEX(A:A,MOD(ROW()-1,COUNTA(A:A))+1,0) 

Первый ответ

Чтобы сделать это с помощью формулы, вы можете использовать комбинацию CountA, Offset, и Mod

Это изображение показывает пример повторяющихся значений от источника в А1: А6

Формула в В1

=MOD(ROW()-1,COUNTA(A:A)) 

Он образует часть функции, используемой в С1 (часть, которая компенсирует строку)

=OFFSET($A$1,MOD(ROW()-1,COUNTA(A:A)),0) 
+1

вашей первой итерации не хватает «F» – sina

+0

Holy дерьмо это сработало! – shinzie

+0

@shinzie если это сработало, не могли бы вы принять ответ, пожалуйста. – Sam

0

Вы можете поддерживать отдельный столбец со счетчиком (например, если ваш счетчик столбца C, C1 будет 1, C2 будет 2 и так далее)

Тогда вы не ссылаться на исходные данные путем копирования весь столбец (например =Source!B1, Source!B2 ..., или что-то формула вы используете сейчас), но с использованием (=INDIRECT("Source!B"&C1), =INDIRECT("Source!B"&C2), ...)

Косвенным принимает ссылку на ячейку строки и преобразует его в правильном превосходит ссылка. Если вы дадите счетчику пробег от 1 до max_row_number, вы получите то же самое поведение, что и сейчас, - скопирован весь исходный столбец.

Но поворот в том, что вы, конечно, могут повлиять на значение счетчика по формуле, как

(в С2) = IF(A2<>A1,1,C1+1)

Таким образом, счетчик начнет с 1 снова каждый раз, когда значение столбец А изменяется. Конечно, вы можете настроить это дальше.

Смежные вопросы