Итак, у меня есть эта формула (которая работает)
=SUM(SUMIF('Inventory 11.09.2018'!$B$2:$B$47;B2;'Inventory 11.09.2018'!$C$2:$C$47);SUMIF($H:$H;B2;$I:$I))
и я хотел бы добиться, чтобы вместо фактического имени рабочего листа (инвентаризация 11.09.2018) формула всегда ссылалась на последний рабочий лист таблицы. Каждый раз, когда проводится инвентаризация, в таблицу добавляется рабочий лист.
Я провел небольшое исследование и нашел следующее решение: Как сделать так, чтобы моя формула всегда ссылалась на последний лист?
Что я сделал с этим решением, так это определил два имени диапазона.
wshNames
=RIGHT(GET.WORKBOOK(1),LEN(GET.WORKBOOK(1))-FIND("]",GET.WORKBOOK(1)))
wshNameLast
=INDEX(wshNames,COUNTA(wshNames)+RAND()*0)
Затем я изменил свою формулу на это:
=SUM(SUMIF(wshNameLast&"!$B$2:$B$47";B2;wshNameLast&"!$C$2:$C$47");SUMIF($H:$H;B2;$I:$I))
Но при нажатии return выдает это сообщение об ошибке: Excel_error_in_formula
Поскольку это немецкий язык, он в основном говорит:
Проблема с этой формулой.
Вы не хотели вводить формулу?
А затем объясняет, что делает апостроф перед формулой.
Если я использую определенные имена исключительно в такой формуле, как
=wshNameLast
они работают. Если я удалю СУММ вокруг такой формулы, просто чтобы проверить, будет ли она работать без СУММ
SUMIF('Inventory 11.09.2018'!$B$2:$B$47;B2;'Inventory 11.09.2018'!$C$2:$C$47)
это тоже не работает. Итак, я полагаю, что что-то не так с определенными именами диапазонов в сочетании с формулой, как я хочу ее использовать.
Вопрос: что я делаю не так и как мне приступить к работе? Также я хотел бы решить эту проблему без VB / VBA, если это возможно.