1

У меня есть список на sheet1 и я хочу получить последнее появление каждого продукта прямо перед ним на странице bank .

Вот формула, с которой я работаю:

=INDEX(sheet1!$Y$52:$Y$1000,SUMPRODUCT(MAX(ROW(sheet1!$I$52:$I$1000)*($C218=sheet1!$I$52:$I$1000))-1))

Он возвращает результат, который не соответствует последнему ожидаемому результату.

Я попробовал эту формулу на другой тестовой странице, которая имеет только 30 элементов для поиска, и в этом файле она работает нормально. но в моем основном файле темы, это дает мне неправильный результат.

Я собираюсь прикрепить свой файл, чтобы вы могли просмотреть его.

https://drive.google.com/file/d/0B0mdhh2PWmIwUEU1MUVMX1l2TVE/view?usp=sharing

и вот скриншот для тех, кому нужно посмотреть на проблему:

1 ответ1

1

В формуле, которую вы скопировали, вы, очевидно, не поняли значение -1 . Массив начался со строки 2; так как часть SUMPRODUCT вернула абсолютное число строк, -1 компенсирует это.

В вашем случае ваш массив начинается в строке 52, поэтому вам нужно вычесть 51, чтобы компенсировать.

Например:

=INDEX(sheet1!$Y$52:$Y$1000,SUMPRODUCT(MAX(ROW(sheet1!$I$52:$I$1000)*($C98=sheet1!$I$52:$I$1000))-51))

Более короткая формула для достижения той же цели:

=LOOKUP(2,1/($C108=sheet1!$I$52:$I$1000),sheet1!$Y$52:$Y$1000)

Это работает, потому что если LOOKUP не находит число, которое равно или больше, чем поиск, он будет соответствовать последнему числу в массиве. Часть 1/... возвращает массив ошибок 1 и DIV/0 . Таким образом, последний 1 соответствует последнему экземпляру, где соответствует C108 ; и мы возвращаемся из соответствующей позиции в столбце Y

Вот скриншоты, показывающие желаемые результаты (согласно вашим скриншотам):

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .