Итак, у меня есть эта формула здесь (которая работает)
=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
они работают. Если я уберу «SUM» вокруг формулы, как это, просто чтобы проверить, будет ли она работать без «SUM»
SUMIF('Inventory 11.09.2018'!$B$2:$B$47;B2;'Inventory 11.09.2018'!$C$2:$C$47)
это тоже не работает. Поэтому я полагаю, что что-то не так в именах определенных диапазонов в сочетании с формулой, которую я хочу использовать.
Вопрос: что я делаю не так и как я могу добраться до работы? Кроме того, я хотел бы решить эту проблему без VB / VBA, если это возможно.