合 在 Excel 中按组汇总值(类似于group by分组求和)
前言
有时,您可能需要根据表中的组对值求和。 例如,我在另一列中有一个带有相应数量的产品列表,现在,我想获取每个产品的小计金额,如下图所示。 本教程将介绍一些用于在 Excel 中解决此任务的公式。
按组汇总值 - 原始数据表中的小计
这里根据 Excel 中的组对值求和的通用语法应该是这样的:
1 | =IF(group_name=cell_above_group_name, "" ,SUMIF(group_range,group_name,sum_range)) |
- group_name:要求和的组名所在的单元格;
- cell_above_group_name:组名上方的单元格;
- group_range:单元格范围包含组名;
- sum_range: 指定组名对应的单元格范围求和。
如果数据按分组列排序,则相同的产品排列在一起,如下图所示。 要按组对数据进行小计,您可以基于 IF 和 SUMIF 函数创建公式。
请将以下公式复制并粘贴到数据旁边的空白单元格中
1 | =IF(A2=A1,"",SUMIF($A$2:$A$13,A2,$B$2:$B$13)) |
- 备注: 在公式:
- A1 是标题单元格,并且 A2 是包含您要使用的产品名称的第一个单元格;
- A2:A13 该列表是否包含您要基于的产品名称;
- B2:B13 是要获取小计的列数据。
2. 然后,将填充手柄向下拖动到要使用此公式的单元格,并根据每个产品名称计算小计,请参见屏幕截图:
公式说明:
=IF(A2=A1,"",SUMIF($A$2:$A$13,A2,$B$2:$B$13))
- SUMIF($A$2:$A$13,A2,$B$2:$B$13):如果范围 A2:A13 中的相应值等于条件 A2,则此 SUMIF 函数将仅对范围 B13:B2 中的值求和。
- IF(A2=A1,"",SUMIF($A$2:$A$13,A2,$B$2:$B$13)):此 IF 函数检查 A 列中的每个值,如果其值与上述单元格中的值相同。 例如,如果单元格值 A2 等于单元格 A1,则不返回任何内容(“”),如果不匹配,则返回 SUMIF 函数的结果。
按组汇总值 - 另一个位置的小计
如果每组的值没有排列在一起,在列中随机列出,要根据组或类别对匹配值求和,您应该从产品名称中提取每个组名,然后根据该组名得到小计为下面的截图显示。
1. 首先,请使用以下数组公式提取唯一的组名,然后按 Ctrl + Shift + Enter 键在一起以获得第一个结果。
1 | =INDEX($A$2:$A$13,MATCH(0,COUNTIF($D$1:D1,$A$2:$A$13),0)) |