在sumproduct中使用两个条件列表

时间:2015-04-16 19:40:32

标签: excel excel-formula excel-2010

我想使用两个标准列表来分析下表

enter image description here

如果A包含List 1中的元素而B包含List 2中的元素,我想要对C列求和。我可以考虑使用公式:

= SUMPRODUCT((A:A =清单1)*(B:B =清单2)*(C:C))

我的公式得到2(a,x,1 + b,y,1),但我想得到3(a,x,1 + b,y,1 + a,y,1 )。

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

这样的事情应该有效:

=SUM(SUMIFS(C:C,A:A,{"a","b"},B:B,"x"),SUMIFS(C:C,A:A,{"a","b"},B:B,"y"))

可能有更多紧凑的数组公式可以编写,但如果每个列表中只有两个变量,那么这不是太糟糕。

答案 1 :(得分:0)

如果您可以使用数组公式而不是sumproduct公式(我发现它们更容易阅读但是它们确实存在在编辑时错误输入的风险),请尝试:

  

= SUM(IF(ISERROR(MATCH(B1:B6,G2:G3,0)),"",(IF(ISERROR(MATCH(A1:A6,F2:F3,0) )"",C1:C6))))

这可以通过创建一个新的A列数组来实现,其中与List1匹配的行显示C列中的值,而与List1不匹配的行显示""。然后使用这个新数组创建一个新的B列数组,其中与List2匹配的行显示我们的新列A-array' (其中包括C列中的值,以及一些""),以及与list2不匹配的行显示""。结果是一个数组,它必须求和以提供结束的单个答案。

由于这是一个数组公式,当您输入它时,您需要按下以下内容完成(每次编辑单元格时):

  

CNTRL + SHIFT + ENTER

而不仅仅是

  

输入

请注意,虽然您可以选择索引中的所有列A / B,但通常不建议这样做(根据我的理解),数组公式将搜索所有列,包括使用范围之外的区域。这大大降低了性能,因此为了您的目的,您可能必须使用其他一种面向未来的方法(例如索引任意大的" A1:A500"或创建某种形式的间接公式,其中包含搜索包含数据的最后一行。)

答案 2 :(得分:-1)

在C1中尝试这个公式:

=COUNTIF(F:F,A1)+COUNTIF(G:G,B1)

所有值= 2符合您的AND标准(在List1和List2中)