2015-04-16 44 views
1

标准两个列表,我想通过使用标准两个列表为下表分析使用在SUMPRODUCT

enter image description here

我想总结列C在A包含从一个元素的情况下列表1和B包含列表2中的元素。我可以想到使用公式:

= 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) 。

任何人都可以帮助我吗?

回答

-1

试试这个公式C1:

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

所有值= 2满足您和标准(List1中和在列表2)

+1

我看不出如何帮助解决我的问题:我不想填充列C,我想要添加列C中的每个单元格,列A中的相应值在List1中,并且相应的值在列B在List2中。 – kkoli

0

像这样的东西应该工作:

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

有可能会写出更紧凑的数组公式,但是如果每个列表中只有两个变量,那么这并不算太坏。

+0

我应该在我的第一篇文章中写到:我需要一个任意数量的变量/标准的通用公式。 – kkoli

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数组”(其中包括列C中的值以及一些“”)的值以及行与list2不匹配显示“”。因为结果是一个数组,所以必须将其相加以提供最终的单个答案。

由于这是一个数组公式,当你进入它,你将需要通过按完成(每次编辑单元格时):

CNTRL + Shift + Enter

,而不是只是

ENTER

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