Excel - 汇总一个具有多个标准的表

时间:2015-01-14 11:58:52

标签: excel excel-formula

      A              B       C
1 Report Line   Data Type   Value  
2     1             a           10
3     1             b           20
4     1             c           30
5     2             a           40
6     2             b           50
7     2             c           60
8     3             a           70
9     3             b           80
10    3             c           90


     E           F
1 Report    Report Line
2      1          1
3      1          3
4      2          2
5      2          3

您好,

在上面的示例中,第一个表显示了每个报告行可以属于一个或多个报告的报告行。第二个表格显示哪个报告行属于哪个报告。

如何汇总C列中所有行,其中数据类型为“a”,表示E:F中给出的表中属于报表2的行?这应该是40 + 70 = 110。

我想这样做而不引用这两个表之外的任何条件范围,一个单元格中的一个公式。尝试在匹配,索引,sumifs,sumproduct中搜索我能想到的一切...

非常感谢。

1 个答案:

答案 0 :(得分:1)

你可以使用以下数组公式(由 CTRL + SHIFT + ENTER 输入):

=SUMPRODUCT(
    C2:C10,
    --(B2:B10="a"),
    --(ISNUMBER(MATCH(A2:A10,IF(E2:E5=2,F2:F5),0))))

解释(另见Excel vocabulary to find solutions faster):

    数组公式中的
  • IF(E2:E5=2,F2:F5)将检查从E2到E5的每个单元格,如果它等于2,它将从F列追加相应的值,否则它会将FALSE追加到输出数组
  • MATCH(A2:A10, inner_array, 0)将inner_array作为普通参数,但由于第一个参数应该只有1个值,因此在数组公式中,它将检查从A2到A10的每个单元格,以便在提供的inner_array中再次完全匹配,如果找到匹配,则将该位置附加到inner_array内,如果不匹配则将#N/A!附加到输出数组
  • ISNUMBER(array)在数组公式中使用时将检查提供的数组中的每个元素,它会将TRUE或FALSE追加到输出数组
  • --(boolean_array)会将数组中的每个项目从布尔值转换为0或1
  • SUMPRODUCT(range, array, array)会将提供的范围或数组中每个对应位置的数字相乘,然后将所有结果汇总