当A、B列匹配上行时合并C列:Excel批量处理求VBA/公式方案
我来帮你搞定这个批量合并重复行的问题,针对你这2万行的Excel数据集,下面提供两种高效的自动处理方案,再也不用手动选范围啦:
方案一:VBA自动处理(推荐,适合大数据量)
这个宏会自动识别工作表里的所有已用数据区域,不需要你手动选择范围,处理逻辑是:遍历每一行,对比当前行的A、B列和上一行是否一致,一致就把当前行的C列内容合并到上一行的C列,最后删除重复的行。
具体操作步骤:
- 打开你的Excel文件,按下
Alt + F11打开VBA编辑器; - 右键点击左侧的工作簿名称,选择「插入」→「模块」;
- 把下面的代码粘贴到模块里,然后按F5运行即可。
Sub MergeDuplicateRows() Dim ws As Worksheet Dim lastRow As Long Dim i As Long ' 设置要处理的工作表,默认是当前激活的工作表,也可改成具体表名比如Sheet1 Set ws = ActiveSheet lastRow = ws.UsedRange.Rows(ws.UsedRange.Rows.Count).Row ' 从下往上遍历,避免删除行后出现跳行漏处理的情况 For i = lastRow To 2 Step -1 ' 对比当前行和上一行的A、B列值是否完全匹配 If ws.Cells(i, "A").Value = ws.Cells(i - 1, "A").Value And _ ws.Cells(i, "B").Value = ws.Cells(i - 1, "B").Value Then ' 合并C列内容,这里用逗号+空格分隔,可按需改成其他分隔符比如"; "或"|" ws.Cells(i - 1, "C").Value = ws.Cells(i - 1, "C").Value & ", " & ws.Cells(i, "C").Value ' 删除当前重复行 ws.Rows(i).Delete End If Next i MsgBox "合并完成!" End Sub
方案二:公式辅助方案(无需VBA,适合不想启用宏的场景)
如果你的Excel版本是2019及以后或者365,可以用辅助列配合公式实现,步骤如下:
- 在D列插入辅助列,D1输入「合并内容」,D2输入公式:
=IF(AND(A2=A1,B2=B1),D1&","&C2,C2)
然后把公式下拉到数据最后一行; - 在E列插入第二个辅助列,E1输入「最终结果」,E2输入公式:
=IF(AND(A2=A3,B2=B3),"",D2)
同样下拉到最后一行; - 筛选E列,只显示非空单元格,然后把A、B、E列的内容复制粘贴到新工作表,就是合并后的最终结果。
注意:旧版本Excel没有TEXTJOIN函数的话,这个公式方案效率会很低,还是优先推荐VBA方案,2万行数据处理起来速度很快。
内容的提问来源于stack exchange,提问作者user3753845
相关产品推荐
相关产品推荐

