Excel:根据条件或从另一个表分组来汇总表的值

时间:2017-10-07 22:24:23

标签: arrays excel

我找不到这个问题,虽然它似乎与这个问题类似:Conditional SUM using multiple tables in EXCEL,除了行在表格中并不总是具有相同的序列。

我的结果表(RES)应根据组表的组(A,B,C)和值表的值进行填充。

我将几个产品分组到A,B,C组中 小组表:

Products    | Group
------------------------
P1          | A
P2          | A
P3          | B
P4          | B
P5          | A
P6          | C

在几个时期内,我有这些产品在不同表格中生成的值。这些表具有相同的列结构,例如:

Value Table Period 1        #   Value Table Period 2    
Products    | Value         #   Products    | Value
------------------------    #   ------------------------
P3          | 40            #   P2          | 60
P5          | 10            #   P5          | 20
P2          | 60            #   P1          | 10
P6          | 50            #   P3          | 30
P1          | 20            #   P6          | 40
P4          | 30            #   P4          | 50

我试图将这些值合并到一个结果表中,该结果表将根据各个时期内的组对不同的产品进行总结,如下所示:

Result  | Period 1  | Period 2
-----------------------------------
A       | 90        | 90
B       | 70        | 80
C       | 50        | 40

我试图应用其他帖子的数组概念,但我没有成功地将它适应我的表格,这些表格在某些结构方面有所不同。如果我能避免使用VBA,我会很高兴。

提前多多感谢!

2 个答案:

答案 0 :(得分:0)

经过一些额外的努力后,我找到了正确的数组公式,应该将其放入Result表的B2单元格中:

=SUM(SUMIF(Period1!$A$2:$A$7;IF(Result!$I$17:$I$22=Result!$A2;Result!$H$17:$H$22);Period1!$B$2:$B$7))

使用CTRL + SHIFT + ENTER确认并向下复制。

我希望这对你也有帮助; - )

答案 1 :(得分:0)

这是另一种方式......

=SUM(IF(ISNUMBER(MATCH(Period1!$A$2:$A$7,IF(Result!$I$17:$I$22=Result!$A2,Result!$H$17:$H$22),0)),Period1!$B$2:$B$7))

使用分号作为分隔符......

=SUM(IF(ISNUMBER(MATCH(Period1!$A$2:$A$7;IF(Result!$I$17:$I$22=Result!$A2;Result!$H$17:$H$22);0));Period1!$B$2:$B$7))

请注意,需要使用CONTROL+SHIFT+ENTER确认公式。