【问题标题】:Excel Formula to SUMIF date falls in particular monthExcel 公式到 SUMIF 日期落在特定月份
【发布时间】:2016-05-24 22:24:25
【问题描述】:

我有以下格式的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

仅当月份位于 Jan 月份时,我才需要对金额字段求和。

我试过的是,

=SUMIF(A2:A6,"MONTH(A2:A6)=1",B2:B6)

但它会返回,

0

我需要的是,

Following values to be summed, 430.00 + 96.00 + 440.00 = 966.00

【问题讨论】:

标签: excel


【解决方案1】:

试试这个:

  =SUM(IF(MONTH($A$2:$A$6)=1,$B$2:$B$6,0))

这是一个数组公式,因此您需要使用 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 电子表格中不起作用

【讨论】:

  • 谢谢它的工作原理。你能告诉我这个数组是如何工作的吗?
  • 有没有办法指定一个完整的列?像 MONTH(A:A) 这样的东西?我最终需要选择一个很大的数字,因为我的 excel 工作表不断被添加到(我也在引用不同的工作表)。 =SUM(IF(MONTH(Input!$A$2:$A$10000)=11,Input!$E$2:$E$10000,0))
【解决方案2】:
=Sumifs(B:B,A:A,">=1/1/2013",A:A,"<=1/31/2013")

这个公式的美妙之处在于您可以向 A 列和 B 列添加更多数据,它只会重新计算。

【讨论】:

  • 这是一个很好的公式,前提是您只想检查 2013 年 的一月。尽管这可能是 OP 的愿望,但他没有在问题中提及具体年份。
  • 对于那些在英国的人,记得把 31 和 1 调换一下……这让我大吃一惊。
【解决方案3】:
=SUMPRODUCT( (MONTH($A$2:$A$6)=1) * ($B$2:$B$6) )

解释:

  • (MONTH($A$2:$A$6)=1) 创建一个 1 和 0 的数组,当 月份是一月,因此在您的示例中,返回的数组将是 [1, 1, 1, 0, 0]

  • SUMPRODUCT 首先将在上述步骤中创建的数组的每个值与数组($B$2:$B$6) 的值相乘,然后将它们相加。因此在 你的例子是这样做的:(1 * 430) + (1 * 96) + (1 * 440) + (0 * 72.10) + (0 * 72.30)

这也适用于 OpenOffice 和 Google 电子表格

【讨论】:

    猜你喜欢
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-11
    • 2017-10-19
    • 1970-01-01
    相关资源
    最近更新 更多