我需要一个聚合函数来根据下一列的内容对列进行求和。我只想在格式化为日期(第2行和第4行)的单元格前面对值进行求和,这些值仅对应于2月(第2行)。
这是表格的外观:
总和(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代表“sum”,代码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)。知道我哪里错了吗?
AGGREGATE
函数的引用形式不接受数组作为参数(除非数组是一系列单元格)。并且Array表单不包含SUM
函数。
如果你想避免使用CSE,可以像这样使用SUMPRODUCT
:
=SUMPRODUCT(ISNUMBER(1/(MONTH(February_Expenses[Date])=2))*February_Expenses[Sum])
除了真实的错误值之外,1/(…)
将FALSE
返回转换为错误以消除非2月份的月份。