分享

Excel | VBA(4)——合并工作表

 bitterfleabane 2020-03-18

一起来学office,提高办公技能

问题情境

大体归纳一下,韩老师讲过如下几种多工作表合并的方法:

Excel | 多工作表合并一文中,讲了利用SQL语句进行多工作表合并;

在在Excel | 零基础也会合并多工作表,只需鼠标按序点下去一文中 ,讲了利用数据查询进行工作表合并;

Excel | 利用数据透视表向导实现多工作表合并计算一文中,讲述了利用数据透视表进行工作表合并计算;

今天增加一种新的,最快速的合并工作表的方法——VBA。

不要怕VBA,你可以从模仿开始写起的,写多了,见识多了,你也会了。当然,如果有编辑的基础的,学的快一些,如果没有编辑基础的朋友,那要先去了解变量、语句、算法、对象的概念了。

VBA实现
(代码行,请切换至横屏观看)
在VBA窗口中输入以下代码:
Sub 合并工作表()
Application.ScreenUpdating = False   '关闭屏幕更新,避免合并时屏幕闪烁
Dim sht As Worksheet                 '定义工作表变量
Dim irow%, icol%                     '定义行列变量
Sheet1.UsedRange.ClearContents       '清除sheet1现有数据
For Each sht In Worksheets
    If sht.Name <> Sheet1.Name Then
        With sht
            irow = .Cells(.Rows.Count, 1).End(xlUp).Row                  '当前工作表数据行数
            icol = .Cells(1, .Columns.Count).End(xlToLeft).Column        '当前工作表数据列数
            If Sheet1.Range("a1") = "" Then
                .Range("a1").Resize(irow, icol).Copy Sheet1.Range("a1")  '当前工作表第一行复制到汇总工作表
            Else
                .Range("a2").Resize(irow - 1, icol).Copy Sheet1.Range("a" & Sheet1.Cells(Sheet1.Rows.Count, 1).End(xlUp).Row + 1)  '当前工作表除第一行以外的数据复制到汇总工作表
            End If
        End With
    End If
Next
Application.ScreenUpdating = True     '打开屏幕更新
End Sub

如下图(请横屏观看):

效果如动图:

如有帮助,请点亮“在看

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多