Excel 2010 VBA 入门 033 批量合并相同的单元格

目录

Range的Merge方法合并单元格

VBA运行时关闭警告

多行中相同的内容处理

示例:

Range的Merge方法合并单元格

    单元格对象的Merge方法可以用来合并相邻的单元格区域,使之成为一个更大的矩形单元格区域。其语法为

Range.Merge

当需要取消合并单元格时,则使用UnMerge方法。
    可以使用循环结构,不断判断是否与之前的部门相同,若相同,则利用Union方法将其添加至所需合并的单元格区域的并集中来。若不相同,则先用Merge将之前的单元格进行合并,然后重新获取当前的部门信息。

VBA运行时关闭警告

    当对单元格区域进行合并操作时,Excel 一般会出现如图所示的警告。在VBA运行过程中,由于需要对多个区域进行合并,该警告的出现将会变得非常恼人。

《Excel 2010 VBA 入门 033 批量合并相同的单元格》

    因而,当VBA代码可能导致出现一些警告信息时,开发者应先关闭警告信息。在VBA中,可以使用Excel程序对象(Application)的DisplayAlerts属性来关闭或开启警告信息,其值可为True或者False,分别表示开启或关闭警告信息。
    一般,该关闭警告信息的语句放置于程序的开始,而在程序运行结束后,需要将警告信息再一次开启,否则用户将在正常操作时收不到任何警告信息而造成一些不必要的问题。

多行中相同的内容处理

    当数据按照某列排序完成后,可以以该列为关键字对相同的信息进行批量处理,比如合并、分类求和、插入汇总行等。通常采用本例所示的循环结构,如图所示多行处理流程图。
《Excel 2010 VBA 入门 033 批量合并相同的单元格》

示例:

    当制作某些报表时,需要将一些内容相同的单元格进行合并。如图所示,该表为各部门的工资信息,现已经将数据按照部门进行排序。能否利用VBA将A列中部门相同的单元格进行批量合并?

部门员工编号姓名基本工资
财务部0006程建华2875
财务部0009李国敏3050
财务部0016袁志刚3523
人事部0125杨建军2700
人事部0209曲波3215
管理部0017周汉林2890
管理部0018骈永富2850
管理部0020孙玉梅2580
管理部0023陈亚菁3460
管理部0072刘志峰1850
管理部0080刘玉录1385
管理部0114俞卫广6700
市场部0215林革壮1565
市场部0233李卫卿6213
市场部0247申玲1230
市场部0260孙正发1950
销售部0265毛传阳3500
销售部0288张元端2465
销售部0293朱凌波3420
销售部0314张宏2310
销售部0371郭建1571
销售部0374高波6200
总经办0377卢卫3200
总经办0391赵秀池2450
Option Explicit

Sub 合并相同的单元格()
    Dim strDep As String
    Dim RowN As Integer
    Dim Rng As Range
    
    strDep = Cells(2, 1).Value
    Set Rng = Cells(2, 1)
    
    '关闭警告提示
    Application.DisplayAlerts = False
    For RowN = 2 To 26
        If strDep = Cells(RowN, 1).Value Then
            Set Rng = Union(Rng, Cells(RowN, 1))
        Else
            Rng.Merge
            strDep = Cells(RowN, 1).Value
            Set Rng = Cells(RowN, 1)
        End If
    Next
    
    Application.DisplayAlerts = True
    
End Sub

 

    原文作者:ngbshzhn
    原文地址: https://blog.csdn.net/ngbshzhn/article/details/115520532
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞