VLOOKUP()
работает путем поиска своего первого аргумента в первом столбце диапазона, указанного во втором аргументе.
Первый столбец вашего второго аргумента должен быть столбцом ITEM
, а не первым столбцом таблицы.
Исправленная формула для BQ20
:
=IF(VLOOKUP(BQ5,Table11[DATE],1,FALSE),VLOOKUP('SUMMARY (NEW)'!B20,Table11[[ITEM]:[COST]],5,FALSE),"")
Однако эта формула все еще в корне ошибочна. Он не подберет правильный элемент на основе даты, поскольку между двумя VLOOKUP()
нет и не может быть ссылки. (Попытка сделать это привела к ошибке #N/A
)
Одно решение для этого использует массивы и SUMPRODUCT()
:
=SUMPRODUCT(Table11[COST]*(Table11[DATE]=$BQ$5)*(Table11[ITEM]=$B20))
Предостережения:
Эта простая формула работает правильно, только если значения, которые необходимо найти, являются числами.
Это работает правильно, только если элементы уникальны для каждой даты.
Оба эти ограничения можно преодолеть с помощью более сложных версий формулы.
РЕДАКТИРОВАТЬ:
Как обнаружил OP, есть формула, эквивалентная приведенной выше, которая использует SUMIFS()
вместо SUMPRODUCT()
:
=SUMIFS(Table11[COST],Table11[DATE],$BQ$5,Table11[ITEM],$B20)
Те же предостережения применимы и к этой формуле.
Существует альтернативное решение , которое действительно использует VLOOKUP()
но для этого требуется вспомогательный столбец.
Добавьте вспомогательный столбец в таблицу ежедневных записей:
Введите следующую формулу во все ячейки столбца Helper
:
=Table11[[#This Row],[DATE]]&Table11[[#This Row],[ITEM]]
Введите следующую формулу в BQ20
:
=VLOOKUP($BQ$5&$B20,Table11[[Helper]:[COST]],9,FALSE)
Обратите внимание, что эта формула корректно работает с нечисловыми значениями и неуникальными элементами, как есть.