第049篇:VBA之合并单元格、取消合并单元格并保留原来的数据

    技术2023-07-19  164

    Range.Merge 方法:由指定的Range对象创建合并单元格

    (一)对选择的区域进行合并

    Sub 合并单元格()

           Selection.Merge              '对选中的单元格区域执行此段代码,进行合并,仅保留左上角值

    End Sub

    **********************

    (二)对相同相邻单元格进行合并

    原料如下:

    部门职工职级1部门张小跳51部门李大刀71部门王老虎81部门陈麻子62部门董小花92部门马大海102部门胡斑马82部门赵小鱼43部门魏小跑93部门于大脑103部门罗青蛙83部门刘兔子4

    Sub 合并单元格实例()       

    Dim er%, rng%, rg As Range             '定义变量

    Application.DisplayAlerts = False       '关掉提示窗口,其内容是“仅保留左上角单元格值”

    er = Application.CountA([a:a])            '数出A列的非空单元格,我们这里是14个

    For rng = er To 2 Step -1                    '执行从第14行到第2行,以-1为步长的循环

           Set rg = Range("a" & rng)            'a14单元格对象赋给rg,那rg就变成了单元格对象

           If rg = rg.Offset(-1) Then rg.Offset(-1).Resize(2).Merge   

    '判断a14单元格,如果该单元格=向上偏移一格的值,那么扩展最后一个单元格的尺寸为2,也就是a13到a14的合并。

    '在下一个循环里,判断a13单元格是否等于向上偏移一格的值(a12),逐一合并单元格,这里a13(连着a14)要和a12合并。

    Next

    Application.DisplayAlerts = True

    End Sub

    执行代码后的效果如下:

    部门职工职级1部门张小跳5李大刀7王老虎8陈麻子62部门董小花9马大海10胡斑马8赵小鱼43部门魏小跑9于大脑10罗青蛙8刘兔子4

    VBA也太好用了叭!

    (三)取消合并单元格并保留原来的数据

    与合并单元格有关的属性

    Range.MergeArea 属性:返回的是一个Range对象,该对象代表包含指定单元格的合并区域。

    Range.UnMerge 方法:取消合并单元格,将合并区域分解为独立的单元格

    Sub test()

    a = Range("a1").MergeArea.Count       '与a1单元格合并在一起的单元格个数,包括 a1 在内哦。

    [a1].UnMerge                                         '取消合并a1单元格

    End Sub

    举个小栗子叭,如下表所示,原始表格里a1、a2、a3单元格都合并在一起了,所以这里的 a = 3.

     AB1122232

    Sub 取消单元格合并后保留原来的数据()

    Dim b%, ad$, rng As Range                '声明变量

           For Each rng In Selection             '对于选中的每一个单元格范围进行一个循环

           ad = rng.Address                          '循环的第一个单元格地址是a2

           b = rng.MergeArea.Count             '计算出来与a2合并在一起的单元格一共有4个

           rng.UnMerge                                 '取消与a2单元格合并的区域

           rng.Resize(b) = rng                       '取出取消合并后单元格行数,此处为5,将变量rng的值全部赋给这5行

           Next

    End Sub

    把这段代码执行到【部门-职工-职级】的工作表内(先选中第一列的这14行单元格再执行代码),运行后效果如下:

    部门职工职级1部门张小跳51部门李大刀71部门王老虎81部门陈麻子62部门董小花92部门马大海102部门胡斑马82部门赵小鱼43部门魏小跑93部门于大脑103部门罗青蛙83部门刘兔子4

    周五快乐朋友们!

    Processed: 0.013, SQL: 9