需求:当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
使用说明
- 打开目标Excel文件,按下
Alt + F11打开VBA编辑器 - 插入新模块:右键点击左侧工程窗口中的工作簿名称 → 插入 → 模块
- 将上述代码粘贴到模块中
- 按下
F5运行代码,或回到Excel界面通过开发工具→宏执行
关键说明
- 代码默认合并A列和B列中B列文本相同的对应单元格,若需要合并其他列,修改
Union方法中的列号即可(比如要合并C列,添加Range(Cells(i - 1, "C"), Cells(i, "C"))) - 采用从下往上遍历的方式,避免合并单元格后行号偏移导致漏处理
- 关闭屏幕更新和事件可以大幅提升大表格的处理速度
- 合并单元格前建议备份原数据,避免后续数据操作出现异常
内容的提问来源于stack exchange,提问作者eagle888
相关产品推荐
相关产品推荐

