【问题标题】:Using SUMIF on a range of columns or SUMPRODUCT to ignore text items在一系列列上使用 SUMIF 或使用 SUMPRODUCT 忽略文本项
【发布时间】:2019-05-03 09:45:47
【问题描述】:

我有一个包含各种文本和数字的范围。我希望根据识别的第一列对数字进行总计。

我试过了

=SUMIF(A1:A20,"John",B1:E20)

它只返回第一列的编号。我也试过了

=SUMPRODUCT((A1:A20="John")*(B1:E20))

但由于 C 列中有文本,因此它返回 #VALUE!。

一个 |乙| C | D | E

约翰 | 5 |葡萄酒 | 2 | 7

肖恩| 6 |啤酒 | 5 | 2

当“John”在 A 列中时,我希望 B-E 列中的所有数值合计在一起

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    这里是一个数组公式解决方案-使用Ctrl、Shift和Enter来确认:

    =SUM(IF(A1:A20="John",IF(ISNUMBER(B1:E20),B1:E20)))
    

    如果您只想排除 C 列,您可以使用这个非数组公式:

    =SUMPRODUCT((A1:A20="John")*(B1:B20))+SUMPRODUCT((A1:A20="John")*(D1:E20))
    

    或者,也许移动 C,使其不在您的数字中间。

    【讨论】:

      【解决方案2】:

      试试这个公式:

      =IF(A1="John", SUMPRODUCT(--(ISNUMBER(B1:E1)),B1:E1), "")
      

      并向下拖动以获取每一行的总和。

      【讨论】:

      • 我认为你没有考虑到它是一个扩展到多行的更大矩阵。
      • 是的,我看到了上面的解决方案,并建议他是否需要每行的总和。还是谢谢
      【解决方案3】:

      只是另一种有趣的方法:

      • 选择整个矩阵,并为其命名(例如“TestRange”)

      • 使用OFFSET() 对表中所有列中的所有值求和

      • H2中使用的公式:

        {=SUM(OFFSET(TestRange,MATCH(H1,A1:A2,0)-1,0,1,COLUMNS(TestRange)))}
        

      注意这是一个数组公式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-17
        • 2011-04-27
        • 2018-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多