搜索
查看: 2251|回复: 0

批量合并单元格VBA

[复制链接]

977

主题

1093

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
15934
发表于 2018-9-2 17:01:32 | 显示全部楼层 |阅读模式
640.gif
Sub MergeRange()   
    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


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

表格智创网

网站简介:表格智创网,是一家以表格设计和技能分享的专业社区,由会计帮帮网投资建设,尽专业,助提高专业技能。

表格智创网欢迎您!

联系我们

  • 工作时间:早上9:00-16:00
  • 客服电话:18668755857
  • 本站网址:www.excelwps.com
  • 淘宝店址:kjbbw.taobao.com

Powered by Discuz! X3.4 © 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表