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

Excel按条件合并单元格:求合并相同交易号行的宏代码

按交易号合并行(合并单元格内容)的VBA宏代码

以下是针对电商交易数据,按交易号合并相同行、合并对应单元格内容的VBA代码,无需求和操作:

Sub MergeSameTransactionIDs()
    Dim ws As Worksheet
    Dim lastRow As Long, i As Long, j As Long
    Dim transactionID As String
    Dim mergeCols As Variant
    Dim delRows As Range
    
    ' 设置目标工作表,可根据实际修改
    Set ws = ThisWorkbook.ActiveSheet
    ' 设置需要合并内容的列(列号,比如A是交易号,B、C、D是要合并的列)
    mergeCols = Array(2, 3, 4) ' 示例:合并B、C、D列内容,可按需调整
    
    ' 获取数据最后一行
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ' 从下往上遍历,避免删除行导致的索引混乱
    For i = lastRow To 2 Step -1
        transactionID = ws.Cells(i, "A").Value
        ' 查找上方相同交易号的行
        For j = i - 1 To 1 Step -1
            If ws.Cells(j, "A").Value = transactionID Then
                ' 合并指定列的内容,用逗号分隔,可修改分隔符
                For Each col In mergeCols
                    If ws.Cells(j, col).Value <> "" And ws.Cells(i, col).Value <> "" Then
                        ws.Cells(j, col).Value = ws.Cells(j, col).Value & ", " & ws.Cells(i, col).Value
                    Else
                        ws.Cells(j, col).Value = ws.Cells(j, col).Value & ws.Cells(i, col).Value
                    End If
                Next col
                ' 标记要删除的行
                If delRows Is Nothing Then
                    Set delRows = ws.Rows(i)
                Else
                    Set delRows = Union(delRows, ws.Rows(i))
                End If
                Exit For
            End If
        Next j
    Next i
    
    ' 删除重复的行
    If Not delRows Is Nothing Then
        delRows.Delete
    End If
    
    MsgBox "合并完成!", vbInformation
End Sub

使用步骤

  • 打开你的电商交易数据Excel文件
  • 按下 Alt + F11 打开VBA编辑器
  • 插入新模块:右键点击左侧工程窗口中的工作簿名称 → 插入 → 模块
  • 将上述代码粘贴到模块中
  • 根据你的实际数据调整:
    1. 修改 mergeCols 数组,填入需要合并内容的列号(比如交易号在A列,要合并B、E列就改成 Array(2,5))
    2. 如果交易号不在A列,修改代码中所有 "A" 为对应的列标(比如交易号在C列就改成 "C")
  • 回到Excel,按下 Alt + F8,选择 MergeSameTransactionIDs 并执行

注意事项

  • 执行前建议先备份原数据,避免误操作导致数据丢失
  • 可修改代码中的分隔符(, )为你需要的符号,比如换行符 vbCrLf 或者分号 ;
  • 确保交易号列没有空值,否则可能导致合并异常

示例效果

原数据:

交易号商品名称备注
TX001手机顺丰
TX001耳机无
TX002充电器京东

合并后:

交易号商品名称备注
TX001手机, 耳机顺丰, 无
TX002充电器京东

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 12:16:00