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

需求:当B列文本相同时用VBA合并对应单元格

Excel VBA实现B列相同文本对应单元格合并

以下是实现该需求的VBA代码,可直接在Excel中使用:

Sub MergeSameCells()
    Dim lastRow As Long
    Dim i As Long
    Dim mergeRange As Range
    
    ' 关闭屏幕更新与事件,提升运行效率
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    
    ' 获取B列最后一行数据行号
    lastRow = Cells(Rows.Count, "B").End(xlUp).Row
    
    ' 从最后一行向上遍历,避免合并后行号错乱
    For i = lastRow To 2 Step -1
        ' 判断当前行与上一行B列文本是否相同
        If Cells(i, "B").Value = Cells(i - 1, "B").Value Then
            ' 定义需要合并的范围(这里以A列和B列为例,可根据需求调整列号)
            Set mergeRange = Union(Range(Cells(i - 1, "A"), Cells(i, "A")), _
                                  Range(Cells(i - 1, "B"), Cells(i, "B")))
            mergeRange.Merge
            ' 设置合并后单元格内容居中(可选)
            mergeRange.HorizontalAlignment = xlCenter
            mergeRange.VerticalAlignment = xlCenter
        End If
    Next i
    
    ' 恢复屏幕更新与事件
    Application.ScreenUpdating = True
    Application.EnableEvents = True
    
    MsgBox "合并完成!", vbInformation
End Sub

使用说明

  1. 打开目标Excel文件,按下Alt + F11打开VBA编辑器
  2. 插入新模块:右键点击左侧工程窗口中的工作簿名称 → 插入 → 模块
  3. 将上述代码粘贴到模块中
  4. 按下F5运行代码,或回到Excel界面通过开发工具→宏执行

关键说明

  • 代码默认合并A列和B列中B列文本相同的对应单元格,若需要合并其他列,修改Union方法中的列号即可(比如要合并C列,添加Range(Cells(i - 1, "C"), Cells(i, "C")))
  • 采用从下往上遍历的方式,避免合并单元格后行号偏移导致漏处理
  • 关闭屏幕更新和事件可以大幅提升大表格的处理速度
  • 合并单元格前建议备份原数据,避免后续数据操作出现异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:15:57