我想使用两个标准列表来分析下表
如果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 )。
任何人都可以帮助我吗?
答案 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中)