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
相关推荐
失败尽常态5233 小时前
用Python实现Excel数据同步到飞书文档
python·excel·飞书
杜大哥10 小时前
如何在WPS打开的word、excel文件中,使用AI?
人工智能·word·excel·wps
@LitterFisher12 小时前
Excell 代码处理
前端·javascript·excel
winfredzhang12 小时前
Python实战:Excel中文转拼音工具开发教程
python·安全·excel·汉字·pinyin·缩写
oh,huoyuyan14 小时前
火语言RPA--Excel插入空列
excel·rpa
企鹅侠客1 天前
开源免费文档翻译工具 可支持pdf、word、excel、ppt
人工智能·pdf·word·excel·自动翻译
小白今天也很酷1 天前
Python与MCU通信:串口数据采集及CSV/Excel存储方法
python·单片机·excel
xlxxy_1 天前
ABAP数据库表的增改查
开发语言·前端·数据库·sql·oracle·excel
程序猿多布2 天前
Unity Excel导表工具转Lua文件
unity·excel
The god of big data2 天前
Excel核心函数VLOOKUP全解析:从入门到精通
excel