Excel:vba实现合并工作表(表头相同)

这个代码应该也适用于一些表头相同的工作表的汇总,只需要修改想要遍历的表,适用于处理大量表头相同的表的合并

这里的汇总合并表 total 是我事先创建的,我觉得比用vba代码创建要容易一下,如果不事先创建汇总表就用下面的代码,在表的部分会报错(在我的主页Excel:vba实现拆分单元格成一字一单元格里面说过这一点,并写有代码)

复制代码
Sub total()
    Dim totalws As Worksheet
    Dim ws As Worksheet
    Dim colindex As Integer
    Dim lastrow As Long
    Dim lastcol As Long
    Dim wsname As Variant
    Dim currentRow As Long

    ' 设定目标工作表
    Set totalws = ThisWorkbook.Worksheets("total")
    
    '清空表,防止还没合并的时候表里面有数据以及运行一次覆盖就原有数据
    totalws.Cells.Clear
    
    ' 初始化totalws行索引,意思是从totalws的第一行开始粘贴
    currentRow = 1
    
    ' 遍历需要合并的工作表
    For Each wsname In Array("六1", "六2", "六3", "六4")
        '通过工作表的名称获取工作表
        Set ws = Worksheets(wsname)
        
        ' 查找每张表的最后一行和最后一列
        lastrow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
        lastcol = ws.Cells(1, Columns.Count).End(xlToLeft).Column
        
        ' 只在第一次循环时复制表头
        If currentRow = 1 Then
            '将表头复制到汇总表的第一行
            ws.Cells(1, 1).Resize(1, lastcol).Copy Destination:=totalws.Cells(currentRow, 1)
            '行数加一,以便后续数据的粘贴到totalws
            currentRow = currentRow + 1
        End If
        
        ' 复制数据,跳过表头
        ws.Cells(2, 1).Resize(lastrow - 1, lastcol).Copy Destination:=totalws.Cells(currentRow, 1)
        '复制完数据之后,totalws表最后一行的行数加一,以便后续数据的粘贴复制
        currentRow = totalws.Cells(totalws.Rows.Count, 1).End(xlUp).Row + 1
    Next wsname

    MsgBox "数据合并完成!"
End Sub
相关推荐
缺点内向4 小时前
Java:创建、读取或更新 Excel 文档
java·excel
wangbing11259 小时前
EXCEL文本数字如何批量转换为数字
excel
web守墓人20 小时前
【go语言】gopls工具与LSP协议全面解析
excel
2501_9307077821 小时前
使用C#代码删除 Excel 中的公式但保留数值
excel
liliangcsdn1 天前
python如何写数据到excel示例
开发语言·python·excel
CNRio1 天前
将word和excel快速转换为markdown格式
python·word·excel
best_scenery1 天前
excel绘制折线图
excel·分布图
大气层煮月亮1 天前
Oracle EBS ERP开发——报表生成Excel标准模板设计
数据库·oracle·excel
葡萄城技术团队2 天前
从 Excel 到你的表格应用:保护工作表功能的嵌入实践指南
excel
番石榴AI2 天前
自己动手做一款ChatExcel数据分析系统,智能分析 Excel 数据
人工智能·python·数据挖掘·excel