Google Sheet分组合并Value列并统计数量的公式实现方法
合并相同名称对应的Value并统计数量
原数据表格
| Names | Value |
|---|---|
| Jack | A2 |
| Jack | A3 |
| Jack | A4 |
| Tom | A5 |
| Tom | A6 |
下面提供三种常用解决方法:
方法1:Excel内置公式(适用于Excel 365/2021)
利用新函数快速实现需求:
- 提取不重复名称:在空白列(如C列)的C2单元格输入
=UNIQUE(A:A),按回车自动生成不重复的Names列表。 - 合并对应Value:在D2单元格输入
=TEXTJOIN(" ", TRUE, FILTER(B:B, A:A=C2)),下拉填充即可得到每个名称对应的合并后Value。 - 统计数量:在E2单元格输入
=COUNTIFS(A:A, C2),下拉填充得到每个名称的Value总数。
最终效果:
| Names | 合并后Value | 数量 |
|---|---|---|
| Jack | A2 A3 A4 | 3 |
| Tom | A5 A6 | 2 |
方法2:Power Query(适合处理大量数据)
操作直观,适合批量处理:
- 选中数据区域,点击「数据」选项卡 → 「从表格/区域」(确认数据有表头)。
- 在Power Query编辑器中,选中Names列,点击「转换」选项卡 → 「分组依据」。
- 在分组窗口设置:
- 分组依据:
Names - 添加两个新列:
- 列名:
合并Value,操作选择「所有行」 - 列名:
数量,操作选择「计数」,目标列选Value
- 列名:
- 分组依据:
- 点击
合并Value列右侧的展开按钮,选择「提取值」,分隔符选空格,确认。 - 点击「关闭并上载」,结果将自动导入新工作表。
方法3:VBA代码(适合自动化重复操作)
如果需要频繁处理这类数据,可一键完成:
- 按下
Alt+F11打开VBA编辑器,插入新模块。 - 粘贴以下代码:
Sub MergeValuesAndCount() Dim ws As Worksheet Dim lastRow As Long Dim dataDict As Object Dim rowIndex As Long Dim nameKey As Variant Set ws = ActiveSheet lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row Set dataDict = CreateObject("Scripting.Dictionary") ' 遍历数据存入字典 For rowIndex = 2 To lastRow nameKey = ws.Cells(rowIndex, "A").Value If dataDict.Exists(nameKey) Then dataDict(nameKey) = dataDict(nameKey) & " " & ws.Cells(rowIndex, "B").Value Else dataDict(nameKey) = ws.Cells(rowIndex, "B").Value End If Next rowIndex ' 清空原数据(保留表头) ws.Rows("2:" & lastRow).ClearContents ' 写入合并后的数据及数量 rowIndex = 2 For Each nameKey In dataDict.Keys ws.Cells(rowIndex, "A").Value = nameKey ws.Cells(rowIndex, "B").Value = dataDict(nameKey) ' 计算数量:按空格拆分后统计元素个数 ws.Cells(rowIndex, "C").Value = UBound(Split(dataDict(nameKey), " ")) + 1 rowIndex = rowIndex + 1 Next nameKey End Sub
- 返回Excel,按下
F5运行代码,原表格将直接更新为合并后的结果,同时新增数量列。
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

