ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何实现简单的多表数据合并?

如何实现简单的多表数据合并?

作者:绿色风 分类: 时间:2022-08-17 浏览:104
楼主
zzmxy
Q: 我想把表中的'初三1班'、'初三2班'的学生成绩通过"合并成绩"按钮合并到'初三成绩表'中,初二、初一不合并在初三成绩表中,
    还有一个问题是各班的人数不定,2班成绩要自动接在1班后,请问VBA怎么写(用循环的方式,因实际工作表不是两张而是很多张)?
  
 



A: 由于各表的名称有规律,且表格的结构一致,因此这种情况编写代码最为简单,使用两个控制变量,以及两个循环即可完成。
如果数据表的格式结构不太一样,那需要根据对应的语句作出判断或修改,本例子使用的代码如下:
  1. Private Sub CommandButton1_Click()
  2.     Application.ScreenUpdating = False  '关闭屏幕刷新
  3.     Columns("A:K").ClearContents        '清空A:K列的内容
  4.     Cells(1, 1).Resize(1, 11) = Array("序号", "姓名", "语文", "数学", "英语", "**", "物理", "化学", "总分", "班级", "年级")
  5.                                     '使用数组的方式,生成标题行,其中Resize()函数的11是列数,与标题行的列数相同
  6.     iRow = 2                        '初始化要输入的行号起始值,为2
  7.     For Each sht In Worksheets      '用For Each循环,遍历本工作簿的所有工作表
  8.         i = 3                       '初始化各个工作表复制的起始位置,由于表格结构一样,都是从第三行开始,所以i=3
  9.         If sht.Name <> ActiveSheet.Name And Left(sht.Name, 2) = "初三" Then
  10.                                     '判断,工作表名不是当前工作表或其前两个字符是不是“初三”,如果不满足则不复制数据
  11.             Do While sht.Cells(i, 1) <> ""  '循环开始,当Ai单元格的值非空时,刚进行下面的复制
  12.                 Cells(iRow, 1) = iRow - 1   '在工作表的第一列,输入序号
  13.                 Cells(iRow, 2).Resize(1, 10).Value = sht.Cells(i, 2).Resize(1, 10).Value   '数据复制
  14.                 iRow = iRow + 1      '序号+1
  15.                 i = i + 1            '工作表数据的行号+1
  16.             Loop
  17.         End If
  18.     Next
  19.     Application.ScreenUpdating = True   '重新开启屏幕刷新
  20. End Sub
另外,由于本例中,数据之间有空行,因此Do...Loop循环里,也可以直接用比较简单的方式End(xlDown)选择区域后进行数值复制,如下:
  1.             sht.Range(sht.Cells(i, 2), sht.Cells(i, 2).End(xlDown).End(xlToRight)).Copy Cells(iRow, 2)
  2.             iRow = Cells(Rows.Count, 1).End(xlUp).Row + 1

多工作表汇总zz.rar
2楼
wise
建议题目修改一下,不具备通用性吧?
3楼
zzmxy

是应该改一下~~最开始的初衷是比较容易修改为适用的,所以才用了那两个字~~谢谢小7提醒!
4楼
baohugengdi
学习了,可是太复杂,学不会

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap