Excel公式到SUMIF日期特定于月份

log*_*gan 40 excel

我有以下格式的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. MONTH($ A $ 2:$ A $ 6)为A2中的日期创建一个月份数值数组:A6,即
    {1, 1, 1, 2, 2}.
  2. 然后比较{1, 1, 1, 2, 2}= 1产生数组{TRUE, TRUE, TRUE, FALSE, FALSE},该数组包含IF语句的条件.
  3. 然后,IF语句返回一个值数组,{430, 96, 400..其中包含月份值等于1且..0,0}月份值不等于1 的总和范围的值.
  4. {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中不起作用

  • 有没有办法指定一个完整的列?像MONTH(A:A)之类的东西?我最终需要选择一个大号,因为我的Excel工作表不断添加(我也引用了不同的工作表).`= SUM(IF(MONTH(输入$ A $ 2:$ A $ 10000)= 11,输入$ E $ 2:$ E $ 10000,0))` (4认同)
  • 我修改了我的答案,解释了公式是如何运作的. (2认同)

小智 25

=Sumifs(B:B,A:A,">=1/1/2013",A:A,"<=1/31/2013")
Run Code Online (Sandbox Code Playgroud)

这个公式的优点是你可以向A列和B列添加更多数据,它只会重新计算.

  • 这是一个很好的公式,只要你想在2013年的**年检查**.虽然这可能是OP的愿望,但他没有在他的问题中提到年份特异性. (3认同)
  • 对于那些在英国的人,请记住将31和1换成...让我感到惊讶。 (2认同)

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