如何在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列生成对应合并结果,操作步骤:
- 按
Alt+F11调出VBA编辑器,右键点击当前工作簿名称,选择「插入 > 模块」 - 将以下代码粘贴到模块编辑区域:
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
- 按
F5运行代码即可完成合并
注意:如果需要仅每个组合的首行显示合并结果,可修改第二部分循环的写入逻辑,判断首次出现key时再写入即可。
内容的提问来源于stack exchange,提问作者BradS
相关产品推荐
相关产品推荐

