Excel 2016:参考公式中的最后一张工作表
Excel 2016: Refer to last worksheet in a formula
所以,我这里有这个公式(有效)
=SUM(SUMIF('Inventory 11.09.2018'!$B:$B;B2;'Inventory 11.09.2018'!$C:$C);SUMIF($H:$H;B2;$I:$I))
我想实现的是,公式始终指的是 table 的最后一个工作表,而不是实际的工作表名称 (Inventory 11.09.2018)。每次完成清单时,工作表都会添加到 table。
我做了一些研究并找到了这个解决方案:How do I get my formula to always reference to the last sheet?
我对这个解决方案所做的是定义两个范围名称。
wshNames
=RIGHT(GET.WORKBOOK(1),LEN(GET.WORKBOOK(1))-FIND("]",GET.WORKBOOK(1)))
wshNameLast
=INDEX(wshNames,COUNTA(wshNames)+RAND()*0)
然后我开始将我的公式更改为:
=SUM(SUMIF(wshNameLast&"!$B:$B";B2;wshNameLast&"!$C:$C");SUMIF($H:$H;B2;$I:$I))
但它在点击 return 时抛出此错误消息:
Excel_error_in_formula
因为这是德语,所以基本上是这样说的:
There's a problem with this formula.
You didn't want to enter a formula?
And then explains what an apostrophe before a formula does.
如果我只在像
这样的公式中使用定义的名称
=wshNameLast
他们工作。如果我像这样删除公式周围的“SUM”,只是为了测试它是否可以在没有“SUM”的情况下工作
SUMIF('Inventory 11.09.2018'!$B:$B;B2;'Inventory 11.09.2018'!$C:$C)
它也不起作用。所以我认为定义的范围名称与我想要使用它的方式结合的公式有问题。
问题是:我做错了什么,我怎样才能开始工作?另外,如果可能的话,我想在没有 VB/VBA 的情况下解决这个问题。
您应该使用 INDIRECT 函数将字符串 wshNameLast&"!$B:$B"
转换为一个范围。像这样 INDIRECT(wshNameLast&"!$B:$B")
.
完整公式:
=SUM(SUMIF(INDIRECT(wshNameLast&"!$B:$B");B2;INDIRECT(wshNameLast&"!$C:$C"));SUMIF($H:$H;B2;$I:$I))
所以,我这里有这个公式(有效)
=SUM(SUMIF('Inventory 11.09.2018'!$B:$B;B2;'Inventory 11.09.2018'!$C:$C);SUMIF($H:$H;B2;$I:$I))
我想实现的是,公式始终指的是 table 的最后一个工作表,而不是实际的工作表名称 (Inventory 11.09.2018)。每次完成清单时,工作表都会添加到 table。
我做了一些研究并找到了这个解决方案:How do I get my formula to always reference to the last sheet?
我对这个解决方案所做的是定义两个范围名称。
wshNames
=RIGHT(GET.WORKBOOK(1),LEN(GET.WORKBOOK(1))-FIND("]",GET.WORKBOOK(1)))
wshNameLast
=INDEX(wshNames,COUNTA(wshNames)+RAND()*0)
然后我开始将我的公式更改为:
=SUM(SUMIF(wshNameLast&"!$B:$B";B2;wshNameLast&"!$C:$C");SUMIF($H:$H;B2;$I:$I))
但它在点击 return 时抛出此错误消息: Excel_error_in_formula
因为这是德语,所以基本上是这样说的:
There's a problem with this formula.
You didn't want to enter a formula?
And then explains what an apostrophe before a formula does.
如果我只在像
这样的公式中使用定义的名称=wshNameLast
他们工作。如果我像这样删除公式周围的“SUM”,只是为了测试它是否可以在没有“SUM”的情况下工作
SUMIF('Inventory 11.09.2018'!$B:$B;B2;'Inventory 11.09.2018'!$C:$C)
它也不起作用。所以我认为定义的范围名称与我想要使用它的方式结合的公式有问题。
问题是:我做错了什么,我怎样才能开始工作?另外,如果可能的话,我想在没有 VB/VBA 的情况下解决这个问题。
您应该使用 INDIRECT 函数将字符串 wshNameLast&"!$B:$B"
转换为一个范围。像这样 INDIRECT(wshNameLast&"!$B:$B")
.
完整公式:
=SUM(SUMIF(INDIRECT(wshNameLast&"!$B:$B");B2;INDIRECT(wshNameLast&"!$C:$C"));SUMIF($H:$H;B2;$I:$I))