我的Excel文件中包含以下数据:
第1页
Product Quantity
Alpha 100
Bravo 200
Charlie 300
第2页
Product Quantity
Bravo 100
Delta 200
第3页
Product Quantity
Charlie 100
Delta 200
我希望获得多张纸上的所有记录,并想出一张总结顶级产品的Excel表格:
摘要
Product Quantity
Charlie 400
Delta 400
Bravo 300
Alpha 100
有什么办法吗?
答案 0 :(得分:1)
假设:
1)每个标签中的数据从A到B列的第2行开始,A列中的 Product
2)在这些选项卡中,没有一个数据超出第1000行(将此值的公式(和命名范围)中的所有匹配项更改为适当大的数字,如果有的话)
3)任何标签中的数据>之间都没有空白单元格
4)您正在使用Excel 2007或更高版本
然后,首先,在摘要表单的某个位置列出水平范围内的所有相关工作表名称(不包括摘要表),例如D1:F1,确保按照它们在标签上的显示精确列出。
其次,转到名称管理器并定义两个新名称:
姓名: Arry1
指: = MMULT(TRANSPOSE(COUNTIFS(间接(“'”& $ 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,间接(“''& $ D $ 1:$ F $ 1&”'!A2:A1000))
(确保在创建它们时它们看起来与此处完全相同。有时,如果粘贴,则最终会在公式周围出现引号,这是不正确的。)
在摘要表的单元格A2中输入:
= Sheet 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”))))
再次,向下复制,直到你开始得到空白。
此致
**数组公式的输入方式与“标准”公式的输入方式不同。您只需按住CTRL和SHIFT键,然后按ENTER键,而不是按ENTER键。如果你已经正确地完成了它,你会注意到Excel在公式周围放置了大括号{}(虽然不要尝试自己手动插入这些)。
答案 1 :(得分:1)
编辑:比单元格中的工作表名称更好的是将它们作为另一个命名范围,例如钢板:
= {"工作表Sheet"" Sheet2的""表Sheet 3"}
然后是公式:
= IFERROR(INDEX(INDIRECT("'"&安培; INDEX(床单,MATCH(FALSE,Arry1 = TRANSPOSE(Arry2),0))及;"&# 39; A2:A1000&#34),MATCH(0,COUNTIF(A $ 2:A2,INDIRECT("'"&安培; INDEX(床单,MATCH(FALSE,Arry1 = TRANSPOSE( Arry2),0))及;"' A2:A1000&#34)),0)),"&#34)
此致
答案 2 :(得分:0)
创建具有多个合并范围的数据透视表。有关图像的示例(但您的情况更简单),请参阅here。