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
相关推荐
Non-existent98716 天前
WPS批量清理单元格空白字符的4种方法-异常数字格式处理-实战
excel·wps
Channing Lewis16 天前
PHP 解析 Excel 的那些坑:一次“行号错位”引发的数据丢失
开发语言·php·excel
jarreyer16 天前
【数据分析绘图】excel绘图和bi工具区别
数据挖掘·数据分析·excel
chatexcel16 天前
ChatExcel Max使用教程:图片、PDF、网页与复杂Excel的一站式数据分析
数据分析·pdf·excel
cngkqy16 天前
excel从某一列中用match筛选匹配的数据
excel
qq_5469372716 天前
Excel批量转PDF_Word_图片,支持自动合并报表,效率翻倍。
pdf·word·excel
ai_coder_ai16 天前
在自动化脚本中操作excel文件
运维·自动化·excel
三千花灯16 天前
【Playwright】 自动化测试之参数化登录(Excel/CSV 数据源)
人工智能·机器学习·excel
罗政16 天前
AI工作流实现Excel全自动化(支持SQL)-案例:医院门诊排班表
人工智能·自动化·excel
小妖66616 天前
excel 怎么在单元格内容自动加上一段文字不能用公式
excel·vba