如何使用SUMIF/SUMIFS仅对连续相同条件值的单元格求和?
对连续条件块内的数值进行累计求和
问题描述
现有条件列(Condition),其中部分条件值连续出现(后续可能重复出现新的连续块),部分为单个条件值。需要实现仅对同一连续条件块内的对应数值进行累计求和,而非对所有相同条件值的数值总和。示例如下:
| Condition | Values | Sum |
|---|---|---|
| A | 20 | 20 |
| A | 25 | 45 |
| B | 10 | 10 |
| B | 15 | 25 |
| B | 22 | 47 |
| C | 12 | 12 |
| D | 30 | 30 |
| D | 25 | 55 |
| D | 24 | 79 |
| A | 24 | 24 |
| A | 18 | 42 |
| A | 26 | 68 |
| D | 20 | 20 |
| D | 20 | 40 |
| B | 25 | 25 |
| B | 25 | 50 |
| B | 20 | 70 |
| C | 18 | 18 |
| C | 12 | 30 |
注:后续再次出现的A条件块需重新从0开始累加,仅计算当前连续块内的数值。
解决方案
SUMIF/SUMIFS本身无法直接识别连续条件块,需先通过辅助列标记连续块分组,再结合SUMIFS实现累计求和:
新增辅助列(Group)
假设Condition列在A列(A1为表头,数据从A2开始),在B列新增Group列,用于标记每个连续条件块的唯一编号:- B2单元格输入:
=1(第一个数据行的初始分组) - B3及以下单元格输入:
=IF(A3=A2,B2,B2+1)
逻辑:如果当前行条件值与上一行相同,则继承上一行的分组号;否则分组号+1,让每个连续块对应唯一编号。
- B2单元格输入:
计算连续块内的累计求和
假设Values列在C列,Sum列在D列:- D2单元格输入:
=SUMIFS($C$2:C2,$B$2:B2,B2) - 下拉填充至所有数据行
逻辑:对从第2行到当前行的Values,筛选出与当前行Group号相同的数值求和,实现当前连续块内的累计计算。
- D2单元格输入:
内容的提问来源于stack exchange,提问作者user3748090
相关产品推荐
相关产品推荐

