Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2318|回复: 1

收集合并单元格的问题

[复制链接]
发表于 2014-11-1 13:46 | 显示全部楼层 |阅读模式
本帖最后由 爱疯 于 2019-12-20 11:20 编辑











Range.UnMerge 方法,取消合并
Range.Merge 方法,合并
Range.MergeCells 属性,可读写,因此也能取消合并
Range.MergeArea 属性,对象所包含的合并区域


'**************************************************************************************
'两句等效
Sub test1()
    Range("a1:c5").UnMerge
    Range("a1:c5").Merge
    Range("a1:c5").MergeCells = False
End Sub


'**************************************************************************************
'如果为 True,则将指定区域中每一行的单元格合并为一个单独的合并单元格。默认值是 False。
Sub test2()
    Range("a1:c5").UnMerge
    Range("a1:c5").Merge True
End Sub


'**************************************************************************************
'查找合并单元格
Sub test3()
    Dim x, y As Range
    For Each x In [a1:c5]
        '如果x是合并单元格,并且x地址等于x所在合并区域的首个单元格地址,则x并入y中
        If x.MergeCells And x.Address = x.MergeArea.Cells(1).Address Then
            If y Is Nothing Then
                Set y = x
            Else
                Set y = Union(y, x)
                Debug.Print y.Address(0, 0)
            End If
        End If
    Next
    If Not y Is Nothing Then y.Select    'y中并入了所有合并区域的首个单元格
End Sub


'**************************************************************************************
'合并练习
'http://www.excelpx.com/thread-306274-1-1.html
Sub test4()
    Dim A, i, x
    A = Range("a1").CurrentRegion
    x = UBound(A)
    For i = x To 2 Step -1
        If A(i, 1) <> "" Then
            If x > i Then Range(Cells(i, 1), Cells(x, 1)).Merge
            x = i - 1
        End If
    Next
End Sub




excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-11-1 14:24 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-4 14:04 , Processed in 0.209417 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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