【问题标题】:SUMIF variable number of columns with varying rows in Excel在 Excel 中具有不同行的 SUMIF 可变列数
【发布时间】:2009-09-03 14:49:00
【问题描述】:

我想根据一个值对 Excel 中的多行进行求和。在下图中,您可以看到表格。

我想在 F1 中输入一个值,其中包含 Jan ->(在 C2 中指定的月份 #)的值的总和,其中 Status 是 C1 中的值。

如果你这样做了

=SUMIF(B5:B11,"open",INDIRECT(CONCATENATE("C5:",ADDRESS(11,2+C2))))

你得到 25(单元格 I2)(这是 C5 和 C8 的总和),而我真正想要的结果是 50(C5+D5(1 月和 2 月开放)和 C8+D8 的总和(一月和二月开放))

希望这有点道理?

我期待任何cmets,建议。

干杯

尼克

alt text http://ntdd2425.fm.netbenefit.co.uk/table.png

编辑 - 我希望我能够在不创建中间列的情况下做到这一点。 Excel 中的不一致是因为 SUM 似乎支持跨多列求和,但 SUMIF 不支持。所以这确实有效:

=SUM(INDIRECT(CONCATENATE(ADDRESS(5,3),":",ADDRESS(5,2+$C$2))))

【问题讨论】:

    标签: excel excel-2003 formula excel-formula


    【解决方案1】:

    我建议将 SUM() 与数组一起使用:

      =SUM(C5:G11*(IF(COLUMN(C5:G11)<=($C$2+1),1,0)*IF($c$1=b5:b11,1,0)))
    

    使用 Ctrl-Shift-Enter 输入它,以便它作为数组公式进入。

    YMMV,但它在这里进行了快速测试。

    基本上,您将三个数组相乘:一个与您的数据相乘,一个与基于月份匹配列的 1 或 0 相乘,最后一个与基于状态过滤器的 1 或 0 相乘。数组大小不匹配,因此重复。

    【讨论】:

    • 我在想同样的事情,但你的答案已经在这里了:=SUM(MMULT((b5:b11=c1)*1,(COLUMN(c4:g4)-COLUMN( c4)
    【解决方案2】:

    我认为分两步做会更容易。

    添加一个带有 OFFSET 函数的辅助列来计算每一行的“年初至今”值。基于您的数据的公式是:

    =SUM(OFFSET(B5,0,1,1,$C$2))

    然后添加一个 SUMIF 函数以帮助器列为目标。

    =SUMIF(B5:B11,$C$1,H5:H11)

    SUMIF screenshot http://img200.imageshack.us/img200/4392/offset.png

    【讨论】:

      猜你喜欢
      • 2019-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-07
      相关资源
      最近更新 更多