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

当A、B列匹配上行时合并C列:Excel批量处理求VBA/公式方案

我来帮你搞定这个批量合并重复行的问题,针对你这2万行的Excel数据集,下面提供两种高效的自动处理方案,再也不用手动选范围啦:

方案一:VBA自动处理(推荐,适合大数据量)

这个宏会自动识别工作表里的所有已用数据区域,不需要你手动选择范围,处理逻辑是:遍历每一行,对比当前行的A、B列和上一行是否一致,一致就把当前行的C列内容合并到上一行的C列,最后删除重复的行。

具体操作步骤:

  1. 打开你的Excel文件,按下 Alt + F11 打开VBA编辑器;
  2. 右键点击左侧的工作簿名称,选择「插入」→「模块」;
  3. 把下面的代码粘贴到模块里,然后按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,可以用辅助列配合公式实现,步骤如下:

  1. 在D列插入辅助列,D1输入「合并内容」,D2输入公式:
    =IF(AND(A2=A1,B2=B1),D1&","&C2,C2)
    然后把公式下拉到数据最后一行;
  2. 在E列插入第二个辅助列,E1输入「最终结果」,E2输入公式:
    =IF(AND(A2=A3,B2=B3),"",D2)
    同样下拉到最后一行;
  3. 筛选E列,只显示非空单元格,然后把A、B、E列的内容复制粘贴到新工作表,就是合并后的最终结果。

注意:旧版本Excel没有TEXTJOIN函数的话,这个公式方案效率会很低,还是优先推荐VBA方案,2万行数据处理起来速度很快。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:13:43