Excel 2016:请参阅公式中的上一个工作表

问题描述 投票:1回答:1

所以,我这里有这个公式(有效)

=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),公式总是引用表的最后一个工作表。每次完成清单时,工作表都会添加到表中。

我做了一些研究,发现了这个解决方案: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$2:$B$47";B2;wshNameLast&"!$C$2:$C$47");SUMIF($H:$H;B2;$I:$I))

但是当它返回时会抛出此错误消息: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的情况下解决这个问题。

excel excel-formula named-ranges
1个回答
2
投票

您应该使用INDIRECT函数将字符串wshNameLast&"!$B$2:$B$47"转换为范围。喜欢这个INDIRECT(wshNameLast&"!$B$2:$B$47")

完整的公式:

=SUM(SUMIF(INDIRECT(wshNameLast&"!$B$2:$B$47");B2;INDIRECT(wshNameLast&"!$C$2:$C$47"));SUMIF($H:$H;B2;$I:$I))
© www.soinside.com 2019 - 2024. All rights reserved.