我有以下格式的excel数据.
Date Amount
03-Jan-13 430.00
25-Jan-13 96.00
10-Jan-13 440.00
28-Feb-13 72.10
28-Feb-13 72.30
Run Code Online (Sandbox Code Playgroud)
我只需要在月份位于1月份时对金额字段求和.
我试过的是,
=SUMIF(A2:A6,"MONTH(A2:A6)=1",B2:B6)
Run Code Online (Sandbox Code Playgroud)
但它回来了,
0
Run Code Online (Sandbox Code Playgroud)
我需要的是,
Following values to be summed, 430.00 + 96.00 + 440.00 = 966.00
Run Code Online (Sandbox Code Playgroud)
chu*_*uff 58
试试这个:
=SUM(IF(MONTH($A$2:$A$6)=1,$B$2:$B$6,0))
Run Code Online (Sandbox Code Playgroud)
这是一个数组公式,所以你将需要与进入它Control- Shift- Enter组合键.
这是公式的工作原理.
{1, 1, 1, 2, 2}
.{1, 1, 1, 2, 2}= 1
产生数组{TRUE, TRUE, TRUE, FALSE, FALSE}
,该数组包含IF语句的条件.{430, 96, 400..
其中包含月份值等于1且..0,0}
月份值不等于1 的总和范围的值.{430, 96, 400, 0, 0}
然后将该数组相加以得到您正在寻找的答案.这基本上等同于SUMIF和SUMIFs函数的功能.但是,这些函数都不支持您尝试包含在条件中的计算类型.
也可以完全放弃IF.由于TRUE和FALSE也可以被视为1和0,因此该公式 - =SUM((MONTH($A$2:$A$6)=1)*$B$2:$B$6)
也可以.
抬头:这在Google Spreadsheets中不起作用
小智 25
=Sumifs(B:B,A:A,">=1/1/2013",A:A,"<=1/31/2013")
Run Code Online (Sandbox Code Playgroud)
这个公式的优点是你可以向A列和B列添加更多数据,它只会重新计算.
Mar*_*aio 16
=SUMPRODUCT( (MONTH($A$2:$A$6)=1) * ($B$2:$B$6) )
Run Code Online (Sandbox Code Playgroud)
说明:
(MONTH($A$2:$A$6)=1)
创建一个1和0的数组,当月份是1月时它是1,因此在您的示例中返回的数组将是 [1, 1, 1, 0, 0]
SUMPRODUCT
首先将上一步中创建的数组的每个值与数组的值相乘($B$2:$B$6)
,然后将它们相加.因此,在您的示例中它执行此操作:(1 * 430) + (1 * 96) + (1 * 440) + (0 * 72.10) + (0 * 72.30)
这也适用于OpenOffice和Google Spreadsheets