用条件水平地总结

我有一个数据表示如下:

ENO ABCD 1001 0 0 1.2 0 1001 1.9 0 0 2.2 1002 0 0 0 0 1002 0 0 6.6 0 1002 0 0 3 0 1003 0 0 0 0 1003 0 0 0 1 1004 0 2 0 0 1004 0 3 0 0 1004 0 0 0 0 1004 0 0 2 0 

我试图总结列A,B,C和D水平如下:

 ENO ABCD ENO SUM_T 1001 0 0 1.2 0 1001 5.3 1001 1.9 0 0 2.2 1002 0 0 0 0 1002 9.6 1002 0 0 6.6 0 1002 0 0 3 0 1003 0 0 0 0 1003 1 1003 0 0 0 1 1004 0 2 0 0 1004 7 1004 0 3 0 0 1004 0 0 0 0 1004 0 0 2 0 

我如何指定公式?

鉴于:

在这里输入图像说明

F1中input:

 =SUM(B1:E1) 

并抄下来。 在G1中input:

 =A1 

G2中input:

 =IF(A2=A1,"",A2) 

并抄下来。 在H1中input:

 =SUMIF(A:A,G1,F:F) 

H2中input:

 =IF(G2="","",SUMIF(A:A,G2,F:F)) 

并抄下来:

在这里输入图像说明

您可以使用SUMPRODUCT函数为多个列提供SUMIF 。

sumproduct_dynamic_ranges

F2:G2中的公式是:

 =IF(A2<>A1, A2, "") =IF(F2="", "", SUMPRODUCT(B$2:INDEX(E:E, MATCH(1E+99,A:A ))*(A$2:INDEX(A:A, MATCH(1E+99,A:A ))=F2))) 

根据需要填写。

SUMPRODUCT函数不喜欢完整的列列引用,宁愿计算每行是否有任何填充单元格。 这种自适应将范围的范围限制到仅仅需要的范围。

可能有一个更有说服力的方法来实现这一点,但这里的照片是我将如何做到这一点。 这使用了四个SUMIF函数,每列一个,加起来计算总和。 对于第一个“ENO”值1001,该函数在第一列中查找(标记为“A”),并将任何匹配与值1001相加。然后,我们对第二列(标记为“B”)执行此操作,等等。 对于您想要总和的每个值,都会重复此操作。

用于第一个“ENO”值的公式1001:

 =SUMIF(A:A,F2,B:B)+SUMIF(A:A,F2,C:C)+SUMIF(A:A,F2,D:D)+SUMIF(A:A,F2,E:E) 

对于每个“ENO”值,这个公式将被重复,其中单元格“F2”包含search值。

在这里输入图像说明

请让我知道,如果我需要详细说明答案或如何创build公式。 🙂

链接到图像

注意 :谢谢Jeeped插入图像