Я использую функцию LOOKUP, чтобы найти последнее появление заданной строки в указанном столбце, например так:
LOOKUP(A3;Runs!D3:D6;Runs!A3:A6)
Однако границы в векторе жестко запрограммированы: Runs!A3:А6. Я хочу, чтобы это значение динамически устанавливалось в последнюю ячейку с данными столбца. Я нашел эту формулу, которая дает последний индекс строки:
COUNTA(Runs!A:A)
Эта другая функция возвращает мне ссылку на ячейку (содержимое ячейки), но я не могу объединить ее с формулой ПРОСМОТР:
INDIRECT("Runs!A"&COUNTA(Runs!A:A))
Есть ли способ динамически установить верхнюю границу для LOOKUP?
EDIT: в диапазоне строк нет пустых строк.
С уважением
решение1
Я понял — проблема в том, чтобы заставить ваш динамический диапазон работать как спецификация диапазона в LOOKUP. Вы почти у цели. Попробуйте это:
LOOKUP(A3;INDIRECT("Runs!D3:D"&COUNTA(Runs!D:D));Runs!A3:A6)
решение2
Функция offset() решит вашу проблему
заменить Runs!A3:A6 наСМЕЩ($A$3;0;0;СЧЁТA($A$3:$A$1000);1)
вы можете немного пофантазировать с помощью Dynamic Define Rangehttp://support.microsoft.com/kb/830287
решение3
Я в итоге сделал это. Спасибо всем за комментарии, ответ fixer1234 был особенно полезен. LOOKUP не давал точных результатов, поэтому я заменил его на пару INDEX/MATCH. Также добавил проверку N/A.
IF(ISNA(INDEX(INDIRECT("Runs!A3:A"&COUNTA(Runs!A:A)), MATCH(A3, INDIRECT("Runs!D3:D"&COUNTA(Runs!D:D)), 0))), "", INDEX(INDIRECT("Runs!A3:A"&COUNTA(Runs!A:A)), MATCH(A3, INDIRECT("Runs!D3:D"&COUNTA(Runs!D:D)), 0)))