Sumif基于多个标准和位置

时间:2016-02-20 16:05:52

标签: excel vba formulas

我尝试使用Excel根据多个条件及其在列中的位置提取数据。

My workbook

所以举个例子。如果我想要SUMIF来接收与First类相关联的数字。该公式将检索指定行中的数字

但是如果我想要检索与England相关联的数字。该公式将包含多个条件,以查找First类,然后查找国家/地区England并检索指定列中其行的数字。

这些列每个月都会增长和缩小。意思是我需要它有点动态。

我尝试使用SUMIFSUMIFS做到这一点,但没有运气。

=SUMIFS(D2:D10,A2:A10,"First",B2:B10,"England")

2 个答案:

答案 0 :(得分:0)

您面临的挑战是,在A,B和C列中,值不会向下重复到现在的空白单元格中。因此,值不会在同一行中彼此相邻。

假设您给出的示例非常简单,并且您还可以为给定的类和国家/地区设置多个国际产品,我会采用以下解决方案:

保留两列(E和F)进行中间计算。如果它们当前使用,请将这些使用的列向右移动,为空的E和F列腾出空间。当然,您也可以为此选择另外两列。但我会假设他们是E和F.

然后在E2中放入此公式,并根据需要将其进一步复制到E列。

=IF(A2<>"", A2, OFFSET(E2,-1,0))

在F2中放入此公式并将其复制下来:

=IF(B2<>"", B2, IF(A2<>"", "", OFFSET(F2,-1,0)))

这应该给出以下显示(E1和F1中的标题标题仅为装饰性的):

[image]

现在,您可以结合C列对这些列执行公式。例如:

=SUMIFS(D2:D10,   E2:E10,"First",   F2:F10,"England",    C2:C10,"")

这将输出2.请注意,如果您真的只想匹配一行,则应为每列(E,F和C)指定条件。

由于使用OFFSET,E和F列中的中间公式对行的删除非常有抵抗力。如果插入行,当然应确保将E和F中的公式复制到其中。

如果您将使用超过3列的源数据,您还需要添加更多具有类似公式的中间列。此外,您的SUMIFS还需要额外的条件。

答案 1 :(得分:0)

您可以对类和国家/地区使用以下SUMPRODUCT():

=SUMPRODUCT(($A$2:$A$10=$F$1)*($B$3:$B$11=$G$1)*($D$3:$D$11))

然后是所有三个:

=SUMPRODUCT(($A$2:$A$10=$F$1)*($B$3:$B$11=$G$1)*($C$4:$C$12=H1)*($D$4:$D$12)) 

参考图片。

enter image description here

这个想法是每列必须在其引用中向下移动一行。 Sum列必须与最后一列被引用的行相同。