我需要一个聚合函数来根据下一列的内容对一列求和。我只想对格式化为日期(第二行和第四行)的单元格前面的值求和,这些日期仅对应于二月(第二行)。
这是表格的外观:
总和(1)|日期(2)
40 February
29,05 19/02/2019
0,00 February
10,00 23/03/2019
10,00 February
17,65 March
0,00 February
我找到了一种方法来执行此操作,但这是一个数组公式,必须避免使用Control
-Shift
-Enter
组合键输入。
这是我现在拥有的有效公式(我在这里找到了该公式的一部分:Excel Formula to SUMIF date falls in particular month)
={SUM(IFERROR(IF(MONTH(February_expenses[Date])=2;February_expenses[Sum];0);0))}
这给出了29.05的预期结果。现在,这里是聚合函数的内容(代码9代表“求和”,代码6代表“忽略错误”):
=AGGREGATE(9;6;February_expenses[Sum]/(MONTH(February_expenses[Date])=2))
还将翻译为(突出显示+ F9键):
=AGGREGATE(9;6;{#VALUE!;29,05;#VALUE!;#DIV/0!;#VALUE!;#VALUE!;#VALUE!})
问题是,此函数返回“ #VALUE!”。我不知道为什么,因为我指出了忽略错误的功能(代码6)。知道我哪里错了吗?
答案 0 :(得分:2)
AGGREGATE
函数的引用形式不接受数组作为参数(除非数组是单元格范围)。而且Array表单不包含SUM
函数。
如果要避免使用CSE,可以使用SUMPRODUCT
,如下所示:
=SUMPRODUCT(ISNUMBER(1/(MONTH(February_Expenses[Date])=2))*February_Expenses[Sum])
1/(…)
将FALSE
返回的错误转换为错误,以消除除实际错误值之外的2月的非月份。