我有一个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
(无论我是否输入 CTRL + SHIFT + ENTER )
但是!! 如果我使用=SUMIF(A2:D6,"=Removed",E2:E6)
,我会正确地获得200
。如果我使用那个公式,这只是一个怪癖,还是实际上是准确的?这很奇怪,因为它似乎与我的If
语句相反,因此我认为200
答案只是这个特定数据的一个怪癖,我不应该使用它
有一个我忽略的公式吗?我也想避免使用UDF /宏。
感谢您的任何想法!
编辑:为了(希望)更加明确,让我说我必须在那里添加30年的数据(从1980年开始),我宁愿不再向我的SumIfs()
添加30多个语句式。我希望有一个快速的方法(psuedo-formula显然):=SumIf(A2:AA100,"<>Removed",AB2:AB100)
答案 0 :(得分:2)
我无法想出一种方法来创建一个动态更新并包含新A列的公式。(虽然我确定它存在)我提出的替代方案是保留最旧的列中的年份,并在您进行操作时进一步添加到工作表中,如下图所示:
从那里,添加一个帮助列以添加是否添加每一行,然后添加这些结果的总和。
F2中的公式,通过F6向下复制:=IF(COUNTIFS($A2:E2,"removed")>0,0,E2)
F7中的公式:=SUM(F2:F6)
当您添加2018时,您右键单击E列,插入一个新行,$ A将保留在前面,但E将更新以适应新列。
答案 1 :(得分:2)
如果要在任何列中找到没有已删除的行的数据列的总和,可以使用以下数组公式(使用 Ctrl + 移 + 输入):
=SUM(IF(MMULT(--(A2:D6="Removed"),TRANSPOSE(COLUMN(A2:D2))),,E2:E6))
计算两个数组 A 和 B 的matrix product:
结果数组中的零表示此行中未发生已删除。
你的公式:
=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)
如here所述:
sum_range参数的大小和形状不必与range参数相同。添加的实际单元格是使用sum_range参数中最左上角的单元格作为起始单元格确定的,然后包括大小和形状与范围参数对应的单元格。