乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > excel中合并单元格-excel批量合并单元格

excel中合并单元格-excel批量合并单元格

作者:乔山办公网日期:

返回目录:excel表格制作

我们今天分享的VBA小代码内容是批量合并相同值的单列单元格。


照例举个例子,如下图所示,A列是班级字段,需要将相同的班级单元格修改为合并单元格……


代码如下:


Sub MergeRange()


'EH技术论坛:VBA编程学习与实践 看见星光


Dim rngData As Range


Dim i&, lngCol&, lngFirst, lngLast


On Error Resume Next


Set rngData = Application.InputBox("请选择单列数据列!", Default:=Selection.Address, Type:=8)


'用户选择数据列


Set rngData = Intersect(rngData.Parent.UsedRange, rngData)


'intersect语句避免用户选择整列造成低效运算


lngCol = rngData.Column 'rngData所在列


lngFirst = rngData.Row


'用户选择的区域并不是一定从第一行开始,使用此句读取开始行


lngLast = lngFirst + rngData.Rows.Count - 1


'rngData结束行


Application.ScreenUpdating = False


'取消屏幕刷新


Application.DisplayAlerts = False


'取消消息提醒。


rngData.Parent.Select


'激活rngData对象所在的工作表,避免跨工作表操作问题


For i = lngLast To lngFirst + 1 Step -1


'对rngData进行从尾向前遍历


If Cells(i, lngCol) = Cells(i - 1, lngCol) Then


Cells(i - 1, lngCol).Resize(2, 1).Merge


End If


Next


rngData.VerticalAlignment = xlCenter


'单元格格式上下居中


Application.ScreenUpdating = True


Application.DisplayAlerts = True


MsgBox "合并完成。"


End Sub


小贴士:


1,该段代码只支持单列单元格区域,例如A10:A20,B2:B500等。


2,由于merge合并后的单元格区域只保留右上角首个单元格的值,因此该段代码遍历单元格区域的顺序是从后向前,而不是从前向后,后者是新人常出错之处。


3,当然也可以采用从前向后的遍历顺序,先将Rng装入数组,对数组中的数据进行遍历判断是否等同,标记头尾行号,再批量合并单元格。该方法的效率也会高于遍历单元格两两合并的方法。


相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网