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)
Обратите внимание, что эта формула корректно работает с нечисловыми значениями и неуникальными элементами, как есть.