计算多个工作表的总值

时间:2014-05-30 11:37:09

标签: excel excel-formula count excel-indirect

我的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

有什么办法吗?

3 个答案:

答案 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