VBA学习笔记之合并单元格

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA学习笔记之合并单元格相关的知识,希望对你有一定的参考价值。

Range.Merge

注意合并区域左上单元格

 1 Sub 太复杂不过也行()
 2 num = Application.CountA([a:a])
 3 For i = 2 To num
 4     If Cells(i, 1) = Cells(i + 1, 1) Then
 5     n = n + 1
 6     Else
 7     Range(Cells(i - n, 1), Cells(i, 1)).Merge
 8     n = 0
 9     End If
10     Next
11 End Sub
 1 Sub 改进版()
 2 Application.DisplayAlerts = False去除合并时系统的提醒
 3 num = Application.CountA([a:a])
 4 Dim rng As Range
 5 For i = num To 2 Step -1
 6 为什么不用正序?用了后就会发现正序合并不完全,因为这里的思路是依次合并
 7 而合并后的区域真正有Value的是该区域最左上的单元格位置
 8 因此正序情况下只会合并两个单元格
 9 第三个单元格因为判断第二个单元格Value为空而不进行合并
10 同理接下来的也就不能合并了
11     Set rng = Cells(i, "i")
12     If rng = rng.Offset(-1) Then
13     rng.Offset(-1).Resize(2).Merge
14     End If
15     Next
16     Application.DisplayAlerts = True开启合并时系统的提醒
17 End Sub

技术分享

取消合并单元格代码:Range.MergeArea

1 Sub 解除合并单元格后保持原来的数据()
2 Dim b%, rng As Range
3     For Each rng In Selection
4         b = rng.MergeArea.Count 合并的单元格数量
5         rng.UnMerge
6         rng.Resize(b) = rng 这里Resize用的巧妙
7     Next
8 End Sub

 

以上是关于VBA学习笔记之合并单元格的主要内容,如果未能解决你的问题,请参考以下文章

VBA学习笔记之单元格查询系统制作

VBA学习笔记之单元格格式实例

VBA学习笔记之End属性&查找最后的单元格方法总结

EXCEL根据单元格名称改变后自杀,求VBA代码!

vba中怎么用代码将单元格内容转换为文本类型?

基于列值合并单元格的 VBA 宏