打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
取消复杂的合并单元格,只需一键

在实际工作中,对于结构简单的带有合并单元格的表格,一般可以通过取消合并单元格后,再通过定位空值然后进行填充,但是对于这种填充只对结构简单的表格有效,如果合并单元格的区域像下面这样子,又将如何取消合并并且填充呢?

多种样式的单元格合并



很显然,对于部门列的单元格合并,由于数据结构十分复杂,上述的做法已经不能满足需求了,一般的查找与引用函数也不会奏效,那么你可以试一下VBA法,两个for循环就可搞定,废话不多说,直接上GIF效果图。

动态演示图





下面的代码你可以直接拷贝到你电脑上用(粘贴到代码窗口[VBE界面]),主要意思是通过你选择的区域进行循环取消合并单元格

Sub UnMergeRange2() '取消合并单元格

Dim MaxRow As Integer '

Dim Rng As Range

Dim x%, y%, m%, n%, i%

Dim Rng2 As Range

    'Dim x% 等价于 Dim x As Integer

On Error ResumeNext'发生错误继续运行

'Rng接收选择的区域

    Set Rng = Application.InputBox('请选择需要取消合并单元格的区域:', _

                '区域选择', , , , , , 8)

'x循环选择区域的行

'y循环选择区域的列

    For x = 1 To Rng.Rows.Count

       For y = 1 ToRng.Columns.Count

 

           'Rng2 接收循环在选择区域的行列(单元格)

           Set Rng2 = Rng.Cells(x, y)

 

           'i 接收Rng2合并单元格的合并单元格的数量

           i = Rng2.MergeArea.Count

           

           '当i=1时,则不存在合并单元格

           '当i>1时,说明存在合并单元格

           If i > 1 Then

 

                'm 接收Rng2合并单元格区域 行数的统计

                'n 接收Rng2合并单元格区域 列数的统计

                m = Rng2.MergeArea.Rows.Count

                n =Rng2.MergeArea.Columns.Count

 

                Rng2.UnMerge '取消合并单元格

               

                'Rng2(取消合并后)扩展m行n列的区域,

                '等于Rng2的内容

                Rng2.Resize(m, n).Value =Rng2.Value

           End If

       Next

    Next

End Sub

包含完整代码的Excel文件在此:

https://pan.baidu.com/s/1NhbbkXinzBbIHi2dRswp8A

图文作者:赵中山

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Excel VBA函数
VBA常用案例【拿来吧你2】
解析UsedRange属性
#Excel VBA#解读(38):快速确定自已的地盘——CurrentRegion属性
Excel办公技巧——完整显示跨页合并的单元格
入门必学 VBA批量合并拆分单元格
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服