我创建了一个公式,它可以从不同的工作表中进行索引匹配,然后将它们加在一起。
有没有什么办法可以使编码更小或者更好? 我尝试过但失败了,但没有得到任何结果 :(
。
我有以下代码;
=IFERROR(INDEX('Report 1'!BC:BC,MATCH(B13,'Report 1'!$A:$A,0)),"0")
+IFERROR(INDEX('Report 2'!BC:BC,MATCH(B13,'Report 2'!$A:$A,0)),"0")
+IFERROR(INDEX('Report 3'!BC:BC,MATCH(B13,'Report 3'!$A:$A,0)),"0")
+IFERROR(INDEX('Report 4'!BC:BC,MATCH(B13,'Report 4'!$A:$A,0)),"0")
+IFERROR(INDEX('Report 5'!BC:BC,MATCH(B13,'Report 5'!$A:$A,0)),"0")
答案1
要从公式中获取结果,请删除"
周围的,0
这样公式就不会尝试添加文本字符串。
但我们可以用以下公式来简化3D 求和
在列表中包含所需工作表的名称,并在 SUMIF 中使用 INDIRECT 引用它们:
=SUMPRODUCT(SUMIF(INDIRECT("'" & D1:D5 & "'!A:A"),B13,INDIRECT("'" & D1:D5 & "'!BC:BC")))
答案2
有没有什么办法可以使编码更小或者更好?
并不真地:(
尽管您可以使用一些解决方法:
- 命名范围:您可以为范围定义名称并引用它们
- 支持单元格:使用另一个单元格来存储函数的结果
MATCH
,因此不需要多次运行 - UDF:使用宏创建用户定义函数,您可以编写比当前公式更好的代码