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

如何在Excel 2010中依据两列唯一值合并对应内容为逗号分隔字符串

Excel 2010 多列匹配合并内容实现方法

以下提供公式、VBA两种实现方案,均可满足按A列Event ID与B列ID组合为唯一键,合并对应C列内容为逗号分隔字符串的需求:

方法1:公式实现(需先排序)

Excel 2010无内置TEXTJOIN函数,需配合排序使用,操作步骤如下:

  • 选中全量数据区域,按「A列Event ID > B列ID」为排序关键字升序排序,确保相同组合的行连续排列
  • 点击D2单元格,输入公式:=IF(AND(A2=A1,B2=B1),D1&","&C2,C2),下拉填充到所有数据行
  • 若需仅保留每个组合的最终合并结果,可新增E列辅助判断,E2输入公式:=IF(AND(A2=A3,B2=B3),"","最终结果"),下拉后筛选E列的「最终结果」项即可

方法2:VBA实现(无需排序,一键生成)

该方案无需提前处理数据,运行后直接在D列生成对应合并结果,操作步骤:

  1. 按Alt+F11调出VBA编辑器,右键点击当前工作簿名称,选择「插入 > 模块」
  2. 将以下代码粘贴到模块编辑区域:
Sub 按双列合并C列内容()
    Dim dic As Object
    Dim lastRow As Long, i As Long
    Dim key As String
    Set dic = CreateObject("Scripting.Dictionary")
    lastRow = Cells(Rows.Count, "A").End(xlUp).Row
    ' 遍历所有行存储合并结果
    For i = 2 To lastRow
        key = Cells(i, "A").Value & "|" & Cells(i, "B").Value
        If dic.exists(key) Then
            dic(key) = dic(key) & "," & Cells(i, "C").Value
        Else
            dic(key) = Cells(i, "C").Value
        End If
    Next i
    ' 写入D列结果
    For i = 2 To lastRow
        key = Cells(i, "A").Value & "|" & Cells(i, "B").Value
        Cells(i, "D").Value = dic(key)
    Next i
    Set dic = Nothing
End Sub
  1. 按F5运行代码即可完成合并

注意:如果需要仅每个组合的首行显示合并结果,可修改第二部分循环的写入逻辑,判断首次出现key时再写入即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:06:05