2016-07-18 2 views
1

Эта формула Excel ниже может возвращать последнее значение в строке 1. Интересно, как это работает. В частности, я не понимаю цели использования MATCH(MAX(1:1),1:1,1)-1 в формуле.Использование формулы Match и Max для получения последнего значения

=OFFSET(A1,0,MATCH(MAX(1:1),1:1,1)-1) 
+0

Я уверен, что кто-то может прокомментировать это лучше на «английском», но чтобы увидеть, как формула разрешается шаг за шагом в строке формул, щелкните текст «Оценить формулу» в разделе «Формулы». Это покажет вам, как работает функция «по частям». – BruceWayne

ответ

1

Эта формула кажется не надежной. С этими данными:

1 | 2 | 3 | | 9 | 8 | 6 | | 17 | 6 | 4 | 10 | 1

, что формула возвращает 17. Кроме того, она не работает с текстом.

Я предлагаю:

=LOOKUP(2,1/(LEN(1:1)>0),1:1) 

, который будет работать с текстом или цифрами. См. HELP для LOOKUP, чтобы понять, как это работает, если lookup_value больше любого элемента в массиве, который выполняется поиск.

1

Поместите =MATCH(MAX(1:1),1:1,1) в ячейку (не в первой строке) и введите некоторые числа в случайные ячейки в первой строке. MATCH function вернет номер индекса столбца (например, столбец B равен 2, столбец Z равен 26 и т. Д.).

Вы используете OFFSET function для смещения от A1, поэтому он должен быть на 1 меньше фактического номера индекса столбца, следовательно -1.

Лучше формула, чтобы определить местонахождение последнего номера или дату в строке 1 будет,

=index(1:1, 1, match(1e99, 1:1)) 

OFFSET считается volatile¹; INDEX function нет.


¹ Летучие функции пересчитывать всегда, когда что-либо в целых изменениях рабочей книги, а не только тогда, когда что-то, что влияет на их изменения конечных результатов. Примерами летучих являются: INDIRECT, OFFSET, TODAY, NOW, RAND и RANDBETWEEN. Некоторые подфункции функций рабочего стола CELL и INFO также сделают их неустойчивыми.

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