假设:
1) 每个选项卡中的数据从 A 到 B 列的第 2 行开始,产品在 A 列
2)在这些选项卡中,数据都没有超过第 1000 行(如果有,则将此值的公式(和命名范围)中的所有出现更改为适当更大的数字)
3)任何选项卡中的数据之间都没有空白单元格
4) 您使用的是 Excel 2007 或更高版本
然后,首先,在摘要表中某处的水平范围内列出所有相关的工作表名称(不包括摘要表),例如 D1:F1,确保您准确地列出它们在选项卡上显示的内容。
其次,转到名称管理器并定义两个新名称:
名称: Arry1
指: =MMULT(TRANSPOSE(COUNTIFS(INDIRECT("'"&$D$1:$F$1&"'!A2:A1000"),A$2:A2,INDIRECT("'"&$D$1:$F $1&"'!A2:A1000"),"<>")),ROW(INDIRECT("1:"&COUNTA(A$2:A2)))^0)
名称: Arry2
指: =SUBTOTAL(3,INDIRECT("'"&$D$1:$F$1&"'!A2:A1000"))
(确保当您创建这些时,它们与此处显示的完全相同。有时,如果粘贴进去,您可能会在公式周围加上引号,这是不正确的。)
在摘要表的单元格 A2 中输入:
=工作表1!A2
(或者不管你的第一张纸的名字是什么。)
然后,在摘要表的 A3 中,此数组公式**:
=IFERROR(INDEX(INDIRECT("'"&INDEX($D$1:$F$1,MATCH(FALSE,Arry1=TRANSPOSE(Arry2),0))&"'!A2:A1000"),MATCH(0,COUNTIF( A$2:A2,INDIRECT("'"&INDEX($D$1:$F$1,MATCH(FALSE,Arry1=TRANSPOSE(Arry2),0))&"'!A2:A1000")),0))," ")
复制下来,直到你开始得到空白。
在 B2(非数组)中:
=IF(A2="","",SUMPRODUCT(SUMIF(INDIRECT("'"&$D$1:$F$1&"'!A:A"),A2,INDIRECT("'"&$D$1: $F$1&"'!B:B"))))
再一次,复制下来,直到你开始得到空白。
问候
**数组公式的输入方式与“标准”公式不同。不是只按 ENTER,而是先按住 CTRL 和 SHIFT,然后再按 ENTER。如果操作正确,您会注意到 Excel 在公式周围放置了大括号 {}(尽管不要尝试自己手动插入这些括号)。