Excel按Index聚合行:数值求和+文本短横线拼接需求
嘿,这个分组聚合的需求我之前帮同事处理过,给你两个靠谱的方案,看你习惯用哪种👇
先明确下你的需求和数据示例:
原始数据
| Index | Value | Text |
|---|---|---|
| A | 10 | Text1 |
| A | 10 | Text2 |
| B | 20 | Text3 |
| C | 30 | Text4 |
| B | 20 | Text5 |
| B | 5 | Text6 |
期望结果
| Index | Value | Text |
|---|---|---|
| A | 20 | Text1-Text2 |
| B | 45 | Text3-Text5-Text6 |
| C | 30 | Text4 |
方案1:用Power Query(推荐,适合大量数据)
Power Query是Excel自带的工具,处理这种分组聚合超级省心,步骤如下:
- 选中你的数据区域(包括表头),点击
数据选项卡 →从表格/区域(弹出对话框时记得勾选「我的表格有标题」) - 进入Power Query编辑器后,选中
Index列,点击转换选项卡 →分组依据 - 在分组设置窗口里配置:
- 分组依据:选择
Index - 新增第一个分组:列名填
Value,操作选「求和」,目标列选Value - 点击「添加分组」,新增第二个分组:列名填
Text,操作选「连接」,目标列选Text,分隔符输入-
- 分组依据:选择
- 点击「确定」,再点击
主页选项卡 →关闭并上载,结果就会自动生成在新工作表里!
如果想直接用M代码快速实现,可在Power Query编辑器的高级编辑器里替换成这段(记得把Table1换成你实际的表格名称):
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], GroupedRows = Table.Group(Source, {"Index"}, {{"Value", each List.Sum([Value]), type number}, {"Text", each Text.Combine([Text], "-"), type text}}) in GroupedRows
方案2:用Excel公式(适合小批量数据)
如果不想用Power Query,用公式组合也能搞定:
- 提取唯一Index值:在空白单元格(比如D2)输入
=UNIQUE(A:A),下拉填充得到所有不重复的Index - 计算对应Value总和:在E2输入
=SUMIF(A:A, D2, B:B),下拉填充 - 合并Text内容:在F2输入
=TEXTJOIN("-", TRUE, IF(A:A=D2, C:C, "")),如果是Excel 2019及更早版本,需要按Ctrl+Shift+Enter触发数组公式;Excel 365/2021直接回车就行,因为支持动态数组,下拉填充完成。
内容的提问来源于stack exchange,提问作者user2436631
相关产品推荐
相关产品推荐

