【问题标题】:Excel - summarize one table with multiple criteria in twoExcel - 将一个包含多个条件的表格汇总为两个
【发布时间】:2015-03-12 14:33:57
【问题描述】:
      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

嗨,

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

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

我想在不引用这两个表之外的任何标准范围的情况下执行此操作,一个单元格中的一个公式。尝试在 match、index、sumifs、sumproduct 中搜索我能想到的所有内容......

非常感谢。

【问题讨论】:

  • 你能把你的第二个表索引到你的第一个表吗?即添加一个显示“报告”的列,但对于每条记录?然后就很容易了。
  • 我试图避免这种方法。

标签: excel excel-formula


【解决方案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) 将提供的范围或数组中每个对应位置的数字相乘,然后将所有结果相加

【讨论】:

  • 谢谢,这令人印象深刻,我希望有一天我能理解这个公式。也感谢词汇贴,非常有用。
  • @gorkas 我添加了解释,希望对您有所帮助,如果它解决了您的问题,请不要忘记接受答案:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-15
  • 1970-01-01
  • 1970-01-01
  • 2021-10-07
  • 1970-01-01
  • 1970-01-01
  • 2021-01-22
相关资源
最近更新 更多