【问题标题】:Excel: SUMIF an Undefined Range set by Blank CellsExcel:SUMIF 由空白单元格设置的未定义范围
【发布时间】:2018-02-20 06:05:54
【问题描述】:

我正在尝试对范围不断变化的单元格范围求和。

A   0
    0
    5
    0
B   1
C   2
    4

“A”应该返回 5,“B”应该返回 1,“C”应该返回 6。一些研究告诉我,OFFSET 公式可能有效,但我没有运气。

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    这个怎么样: 在数据列之间插入一列并粘贴公式:(假设 Col A 现在有 A、B、C 和 Col C 有数字,您将其粘贴到 Col B):

    =IF(AND(A2="",A1<>""),B1,IF(AND(A2="",A1=""),B1,A2))
    

    请添加标题行以避免第一列出现错误...

    这将填充值,您的数据现在将如下所示:

    ColA    ColB    ColC
    A       A       0
            A       0
            A       5
            A       0
    B       B       1
    C       C       2
            C       4
    

    现在您可以像这样使用 sumif 甚至是数组输入公式来汇总值:

    Col F=SUM(IF($B:$B=E2,$C:$C,0)) 中的公式(使用 CTRL+Shift+Enter 而不是正常的回车,使其成为数组公式)

    ColE    ColF
    C       6
    B       1
    A       5
    

    希望这会有所帮助。

    【讨论】:

    • @pnuts 我从来不知道那个
    • @pnuts,Go To Special... 的东西在哪里?我找不到它。你介意指出这一点吗?非常感谢!
    • 在另一边,您不需要在中间插入一列,如果存在,您可以在开放空间的右侧添加一列。或其他地方。
    【解决方案2】:

    不填写Column A 中的空白,这里是实现目标的公式。假设您要填写cell C1的公式(这是一个数组公式,请同时单击Ctrl + Shift + Enter):

    {=IF(A1="","",SUM(OFFSET($A1,0,1,MATCH(0,ISNUMBER(VALUE(A2:$A$7&B2:$B$7))*1,0))))}
    

    它的作用是使用OFFSET 来查找要聚合的范围。棘手的部分是OFFSET 的Height。为了找到它,我连接column A and column B 并检查它是否返回为值,使用ISNUMBER 和*1 将TRUE 和FALSE 更改为0 和1。找到下一个0 并返回行号我知道在哪里停止添加号码。希望这会有所帮助,但如果您有任何问题,请告诉我。

    【讨论】:

      【解决方案3】:

      在Column C 中尝试这个公式并将其向下拖动,

      =IF(A1<>"",SUM(INDIRECT("B" & ROW() & ":B" & IFERROR(MATCH("*",A2:A$10,0)+ROW()-ROW($1:$1),999))),"")
      

      注意:- 这是not an array 公式。

      【讨论】:

        猜你喜欢
        • 2018-08-09
        • 2021-12-02
        • 2016-01-31
        • 1970-01-01
        • 1970-01-01
        • 2012-12-17
        • 2019-10-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多