excel - Excel 2016:参考公式中的最后一个工作表
问题描述
所以,我在这里有这个公式(有效)
=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))
我想实现,而不是实际的工作表名称(Inventory 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))
但它在点击返回时会抛出此错误消息: 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 的情况下解决这个问题。
解决方案
您应该使用 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))
推荐阅读
- java - 如何使用 Firestore 实现实时搜索
- python - 按键分组的数组数组以显示为表格 Python
- c - 我在哪里可以获得 OpenCL multigpu 示例代码?
- sql - SQLite - 使用复杂关节表过滤查询
- html - ul边框和li背景之间的空间很小
- reactjs - form.isFieldValidating 在 ant Design 中不起作用
- python - Django注释字段是否为空
- autodesk-forge - Autodesk.Viewing.Collaboration
- jenkins - 从头开始安装 Jenkins 实例/预配置 Jenkins 的最佳实践
- node.js - Sequelize 将附加字段插入联结表