在同一个标​​准范围内使用SumIf()或SumIfs()?

我有一个SumIfs()公式,在一个范围内本质上是相同的条件。

 2017 2016 2015 2014 Data Same Same Same Same 100 Removed Same Same Same 100 Removed Same Same 100 Same Same Same Same 100 Removed Same Same Same 100 

(从A1开始,以2017为头)

右下方的公式100

=SUMIFS($E$2:$E$6,A2:A6,"<>Removed",B2:B6,"<>Removed",C2:C6,"<>Removed",D2:D6,"<>Removed")

上述公式工作正常,并正确返回200

我只想将“数据”列中的所有数据求和,其中左侧范围中的值不会在任何单元格中Removed 。 但是,我将要添加列到这个表,所以它不会不得不添加一个范围和条件。 我想这样做是一个数组公式可以工作,但我得到一个不正确的总和:

=SUMIF(A2:D6,"<>Removed",E2:E6)返回300 (不pipe我用CTRL + SHIFT + ENTERinput

但!! 如果我使用=SUMIF(A2:D6,"=Removed",E2:E6)我正确得到200 。 这只是一个怪癖,或者如果我使用这个公式,它实际上是准确的? 这很奇怪,因为它似乎我的If语句相反 ,因此我认为200答案只是这个具体数据的一个怪癖,我不应该使用它。

有一个我忽略的公式吗? 我也想避免UDF /macros。

感谢您的任何想法!

编辑:为了(希望)更加明确,比方说,我必须在那里添加30年的数据(从1980年开始),我宁愿不必SumIfs()我的SumIfs()公式添加30多个语句。 我希望有一个快速的方法来做(显然, =SumIf(A2:AA100,"<>Removed",AB2:AB100)公式): =SumIf(A2:AA100,"<>Removed",AB2:AB100)

如果要查找任何列中没有删除的行的数据列总和,可以使用以下数组公式(使用Ctrl + Shift + Enter确认 ):

 =SUM(IF(MMULT(--(A2:D6="Removed"),TRANSPOSE(COLUMN(A2:D2))),,E2:E6)) 

它计算两个数组AB的 matrix乘积 :

在这里输入图像说明

结果数组中的零表明Removed不会发生在这一行中。

你的公式:

 =SUMIF(A2:D6,"=Removed",E2:E6) 

相当于:

 =SUMIF(A2:D6,"=Removed",E2:H6) 

和:

 =SUMIF(A2:A6,"=Removed",E2:E6)+SUMIF(B2:B6,"=Removed",F2:F6) +SUMIF(C2:C6,"=Removed",G2:G6)+SUMIF(D2:D6,"=Removed",H2:H6) 

如下所述:

sum_range参数不必与range参数具有相同的大小和形状。 通过使用sum_range自variables中最左上angular的单元格作为开始单元格,然后包括大小和形状对应于范围参数的单元格来确定添加的实际单元格。

我想不出一种方法来创build一个dynamic更新的公式,并包含一个新的列A.(虽然我确信它存在)我想出的另一种方法是保留最长的一年列,并进一步添加工作表,如图所示:

这里

从那里,添加一个助手列来添加是否每行将被添加,然后是这些结果的总和。 F2中的公式,向下复制到F6: =IF(COUNTIFS($A2:E2,"removed")>0,0,E2) F7中的公式: =SUM(F2:F6)

当你添加2018年,你会右键点击列E,插入一个新的行,$ A将留在前面,但E会更新,以适应新的列。