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中搜索我能想到的一切...
非常感谢。
答案 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)
会将提供的范围或数组中每个对应位置的数字相乘,然后将所有结果汇总