VBA实现将所有数据表中的内容合并到一张新的数据表中

Attribute VB_Name = "NewMacros"
Option Explicit
Public Const Const_OutSheetName As String = "VBA汇总"

Sub 汇总V2()
Attribute 汇总V2.VB_Description = "宏由 LiuZW 录制,时间: 2023/08/19"
Attribute 汇总V2.VB_ProcData.VB_Invoke_Func = " 14"
'
' 汇总 Macro
' 宏由 LiuZW 录制,时间: 2023/08/19

    Dim i As Integer
       
    
    '判断是否已有“VBA汇总”数据表
    For i = 1 To Worksheets.Count
        If Worksheets(i).name = Const_OutSheetName Then
            MsgBox ("要生成的数据表“" + Const_OutSheetName + "”存在同名数据表,请修改或删除同名数据表后重试。")
            Exit Sub
        End If
    Next
    
    '选中第一个数据表,以使得生成的汇总表在最前面,便于查阅
    Application.Worksheets(1).Activate
    
    '创建“VBA汇总”数据表
    Sheets.Add
    ActiveSheet.name = Const_OutSheetName
    Columns("A:A").Select
    Selection.NumberFormatLocal = "@"
    
      
    '复制各个数据表的数据并粘贴到汇总表
    For i = 1 To Worksheets.Count
        Dim mSheetName As String
        mSheetName = Worksheets(i).name
        
        '如果当前数据表不是 无需汇总的数据表,就执行汇总
        If Worksheets(i).name <> Const_OutSheetName Then
        
            '执行复制和粘贴
            Application.Worksheets(mSheetName).Activate
            Dim mUsedRowCount, mUsedColumnCount As Integer
            mUsedRowCount = ActiveSheet.UsedRange.Rows.Count
            mUsedColumnCount = ActiveSheet.UsedRange.Columns.Count
            Application.Worksheets(mSheetName).Range(Cells(1, 1), Cells(mUsedRowCount, mUsedColumnCount)).Select
            Selection.Copy
            
            '判断要粘贴的位置并粘贴
            Application.Worksheets(Const_OutSheetName).Activate
            Dim usableRowCount As Integer
            usableRowCount = Application.Application.Sheets(Const_OutSheetName).Range("b65536").End(xlUp).Row + 2
            Application.Worksheets(Const_OutSheetName).Cells(usableRowCount, 2).Select
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlPasteSpecialOperationNone, SkipBlanks:=False, Transpose:=False
            
            '填充第一列
            Dim k As Integer
            For k = 0 To mUsedRowCount
                Application.Worksheets(Const_OutSheetName).Cells(usableRowCount + k, 1).Value = mSheetName
            Next
            
        End If
    Next
    
    MsgBox ("数据表内容汇总已完成,请在最左侧 《VBA汇总》 数据表中查阅汇总数据。")
End Sub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值