在Excel中进行分组和求和

时间:2019-06-20 17:08:06

标签: excel excel-formula

我想将一列中的值基于另一列进行分组,然后使用sumproduct(全部在一个公式中,而没有其他列)。

这是我的示例表。不幸的是,我不知道如何创建表格,但这是表格图像的链接:https://ibb.co/9pLcQ89

Country M/F number of people  
US      M   50  
US      F   40  
UK      M   75  
UK      F   60  

我想得到以下结果。首先按国家/地区分组:

US = 90
UK = 135

下一步是使用SUMPRODUCT90*90+135*135=26325

最后我的结果应该是:SQRT(26325)=162.2498

我最大的担心是如何使用一个公式而不使用名称US和UK来获得组号?

谢谢!

2 个答案:

答案 0 :(得分:2)

此数组公式将创建唯一列表并进行数学运算:

=SQRT(SUMPRODUCT(SUMIF(A:A,INDEX(A:A,N(IF({1},MODE.MULT(IF(ROW(A2:A5)=MATCH(A2:A5,A:A,0),ROW(A2:A5)*{1,1}))))),C:C)^COUNTIF(A:A,INDEX(A:A,N(IF({1},MODE.MULT(IF(ROW(A2:A5)=MATCH(A2:A5,A:A,0),ROW(A2:A5)*{1,1}))))))))

作为数组公式,退出编辑模式时必须使用Ctrl-Shift-Enter而不是Enter进行确认。

enter image description here


通过更改引用,无论国家/地区的数量如何,范围都会根据需要增加:

=SQRT(SUMPRODUCT(SUMIF(A:A,INDEX(A:A,N(IF({1},MODE.MULT(IF(ROW(A2:INDEX(A:A,MATCH("zzz",A:A)))=MATCH(A2:INDEX(A:A,MATCH("zzz",A:A)),A:A,0),ROW(A2:INDEX(A:A,MATCH("zzz",A:A)))*{1,1}))))),C:C)^COUNTIF(A:A,INDEX(A:A,N(IF({1},MODE.MULT(IF(ROW(A2:INDEX(A:A,MATCH("zzz",A:A)))=MATCH(A2:INDEX(A:A,MATCH("zzz",A:A)),A:A,0),ROW(A2:INDEX(A:A,MATCH("zzz",A:A)))*{1,1}))))))))

![enter image description here

答案 1 :(得分:1)

您可以使用数组公式(通过 CTRL + SHIFT + ENTER 输入):

=SQRT((SUMPRODUCT(IF(A2:A5="US",C2:C5))^COUNTIF(A2:A5,"US"))+(SUMPRODUCT(IF(A2:A5="UK",C2:C5)) ^COUNTIF(A2:A5,"UK")))

enter image description here