根据单一条件对多行求和

根据单一条件对多行求和

假设我有下表

表格示例

下表中__数据

表2示例

在工作表中__数据对于给定的类别名称,我想对 P、R、T、V 和 X 列中的所有值求和。

对于单行,我知道我可以使用以下公式:(例如 cat6)

=IF(
    SUMIF(month!$O$5:$O$34;__data!$A7;month!$P$5:$P$34)<>0;
    SUMIF(month!$O$5:$O$34;__data!$A7;month!$P$5:$P$34);
    "")

现在,我相信这应该可以实现SUMPRODUCT。但我不明白应该如何编码。

我有这个 SUMPRODUCT 公式,但是这会导致#VALUE!错误;

=SUMPRODUCT(
    --(month!$O$5:month!$O$34=__data!$A7);
    (
        month!$P$5:month!$P$34 +
        month!$R$5:month!$R$34 + 
        month!$T$5:month!$T$34 + 
        month!$V$5:month!$V$34 + 
        month!$X$5:month!$X$34)
)

我认为这与 P、R、T、V 和 X 中的值的填充方式有关。这是通过以下公式完成的;

=IF(SUMIF($B$5:$B$123;O8;$D$5:$D$123)<>0;SUMIF($B$5:$B$123;O8;$D$5:$D$123);"")

答案1

您可以使用一个公式轻松完成此操作。但您需要一种方法来返回不连续的列。

  • 我给数据表命名catTbl以便于参考。
  • 使用以下函数查找行MATCH
    • =MATCH(A2,INDEX(catTbl,0,1),0)
      • 类别在 A2 中,INDEX函数返回第一列中的所有行。
    • 构造N(IF(1,{2,4,6,8,10})) will return the relevant columns to theINDEX`函数。
    • 然后只是SUM数组

所以整个公式:

=SUM(INDEX(catTbl,MATCH(A2,INDEX(catTbl,0,1),0),N(IF(1,{2,4,6,8,10}))))

在此处输入图片描述

在此处输入图片描述

答案2

一般来说,使用非连续的 Excel 公式很困难。

我建议添加一个辅助行,在其中指示要汇总的列,然后可以使用这个相对简单的公式:

=SUMIF($Q$4:$Y$4,1, INDEX($Q$6:$Y$19,MATCH(M6,$P$6:$P$19,0),0))

在此处输入图片描述

相关内容