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用的巧妙,把一个单元格里的Value都赋给Range.Resize之后的区域
7     Next
8 End Sub

 

转载于:https://www.cnblogs.com/gilgamesh-hjb/p/7497220.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值