【Excel VBA编程】数据整理快人一步:多张结构相同的表格合并
- 2026-11-08 08:35:30
【Excel VBA编程】数据整理快人一步:多张结构相同的表格合并“同一工作表中若干表格合并” 

总是听到或看到有人问,编程好学吗?如何入门?多久能学会?它能做些什么?怎么写代码呀?执行过程中出问题了谁能帮帮我...如果你也有类似的问题那就赶快关注我的公众号,一起学起来吧!
本期的需求,关乎每一位与数据打交道的小伙伴。想象一下,每个月末需要汇总数十个结构相同的部门业绩表,或是将来自不同渠道、格式却大同小异的数据合并分析
手动复制粘贴不仅效率低下、耗时费力,更是一个极易出错的“雷区”,一个小小的遗漏或错位就可能导致后续分析全面失真
1 实现功能
如下图所示,同一个工作表(如Sheet1)中,并排存放着许多表格(测试数据仅展示4张),它们结构相同

现要求快速整合这些表格,将其合并成一张表格,并只保留第一张表格的表头,其他表格去掉表头后首尾相接。整合后最终效果如下:

这个需求虽然简单,但正好是练习VBA编程的好机会,因为复杂的编程往往都是这些无数简单基础编程糅合而成的
2 代码及说明
2.1 操作步骤
打开Excel工作簿,另存为.xlsm
按下 Alt + F11 快捷键,打开VBA编辑器
在VBA编辑器左侧的“工程资源管理器”窗口中,右键点击你的工作簿名称,选择“插入” -> “模块” 将文中代码粘贴到新打开的模块代码窗口中
修改待合并表格所在的工作表后,执行MergeTables代码
Set wsSource = ThisWorkbook.Worksheets("Sheet9") ' 根据实际表名修改2.2 代码实现
参考代码如下,每个关键步骤都有注释
Sub MergeTables()Dim wsSource As Worksheet, wsDest As WorksheetDim firstCell As Range, tableRng As Range, dataRng As RangeDim destRow As Long, i As Long, startCol As Long, lastCol As LongSet wsSource = ThisWorkbook.Worksheets("Sheet9") ' 根据实际表名修改'添加工作表,名字为“合并结果”Set wsDest = ThisWorkbook.Worksheets.AddwsDest.Name = "合并结果"destRow = 2'默认所有表格都从第一行开始lastCol = wsSource.Cells(1, wsSource.Columns.Count).End(xlToLeft).ColumnstartCol = 1'循环处理每张表格Do While startCol <= lastColSet firstCell = wsSource.Cells(1, startCol)'跳过空列If Application.CountA(firstCell) = 0 ThenstartCol = startCol + 1GoTo ContinueLoopEnd IfSet tableRng = firstCell.CurrentRegion'添加表头信息(包括格式)tableRng.Cells(1, 1).Copy Destination:=wsDest.Cells(1, 1)tableRng.Cells(1, 2).Copy Destination:=wsDest.Cells(1, 2)'获取数据区域,排除表头Set dataRng = tableRng.Resize(tableRng.Rows.Count - 1, tableRng.Columns.Count).Offset(1, 0)If Application.CountA(dataRng) > 0 Then' 复制数据到目标位置dataRng.Copy Destination:=wsDest.Cells(destRow, 1)destRow = destRow + dataRng.Rows.CountEnd If'更新起始列位置startCol = tableRng.Columns(tableRng.Columns.Count).Column + 1ContinueLoop:LoopMsgBox "合并完成!共合并了 " & (destRow - 1) & " 行数据。", vbInformationEnd Sub
3 结尾
好了,今天的编程知识到此结束了,今天揭秘电子设备存储容量标注的“缩水”之谜
无论是电脑内存还是手机存储,标称容量(如8GB、128GB)和系统显示的实际可用容量有差异,一个原因是计算标准差异,如厂商采用十进制(1GB=1000MB),而操作系统采用二进制(1GB=1024MB);另一原因是系统预装软件占用了
本公众号一直在不间断地分享免费的编程案例和实用技巧。无论您是用来提升自动化办公效率还是想提升自我,请关注我的公众号,解锁更多的编程知识
本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。