You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Excel中将列值转成行并合并重复左列数据?

Excel合并重复行并将对应列内容同行展示的方法

以下是三种实用的实现方式,根据你的Excel版本和需求选择:

方法1:Power Query(推荐,无需公式/代码)

  • 选中目标数据区域(包含两列),点击「数据」选项卡 → 「从表格/区域」,确认数据范围后进入Power Query编辑器。
  • 选中左列(如列1),点击「转换」→「分组依据」:
    • 分组依据选择左列名称
    • 新列名设为「合并内容」,操作选择「所有行」,点击确定。
  • 选中「合并内容」列,点击「添加列」→「自定义列」,输入公式:Text.Combine([合并内容][列2], " ")(将「列2」替换为你右列的实际名称),点击确定。
  • 删除「合并内容」列,保留左列和新生成的自定义列,最后点击「主页」→「关闭并上载」,结果会导出到新工作表。

方法2:TEXTJOIN函数(Excel 2019/365适用)

假设左列是A列,右列是B列,在C2单元格输入公式:

=TEXTJOIN(" ", TRUE, IF($A$2:$A$23=A2, $B$2:$B$23, ""))
  • 非365版本按 Ctrl+Shift+Enter 作为数组公式输入,365版本直接回车。
  • 下拉填充公式后,复制C列并「粘贴为值」,再选中A、C列,点击「数据」→「删除重复值」(仅勾选A列),即可得到去重后的合并结果。

方法3:VBA代码

  • 按 Alt+F11 打开VBA编辑器,插入新模块,粘贴以下代码:
Sub MergeDuplicates()
    Dim ws As Worksheet
    Dim lastRow As Long, i As Long, j As Long
    Dim dict As Object
    Set dict = CreateObject("Scripting.Dictionary")
    
    Set ws = ActiveSheet
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    For i = 2 To lastRow
        If Not dict.Exists(ws.Cells(i, "A").Value) Then
            dict(ws.Cells(i, "A").Value) = ws.Cells(i, "B").Value
        Else
            dict(ws.Cells(i, "A").Value) = dict(ws.Cells(i, "A").Value) & " " & ws.Cells(i, "B").Value
        End If
    Next i
    
    Set ws = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
    ws.Cells(1, 1).Value = "左列值"
    ws.Cells(1, 2).Value = "合并内容"
    
    j = 2
    For Each Key In dict.Keys
        ws.Cells(j, 1).Value = Key
        ws.Cells(j, 2).Value = dict(Key)
        j = j + 1
    Next Key
End Sub
  • 返回Excel按 F5 运行代码,合并结果会自动生成在新工作表中。

内容的提问来源于stack exchange,提问作者user19610349

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 00:05:23