Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2259|回复: 4

[已解决]请vba老师帮忙合并代码,取消中间步骤

[复制链接]
发表于 2015-7-14 19:25 | 显示全部楼层 |阅读模式
本帖最后由 武林长风 于 2015-7-15 12:12 编辑

我之前这样做的:用vba将各校成绩单文件夹里的成绩整理新成绩单;再把新成绩单工作簿的1-6年级工作表的A-I列复制到考试成统计工作簿的对应年级里,不删除这里的1-6年级工作表,否则汇总表里的公式会出现错误。
       现在我想可否去掉中间的整理成绩单这步,直接从各校成绩单文件夹里把每个学校的1-6年级像新成绩单那样的表导入到考试成统计工作簿的1-6 年级工作表里。谢谢您!!!

最佳答案
2015-7-15 11:20
请看附件。导入的数据只含纯数据,原先中间的那些表头全没了。不影响统计。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2015-7-15 11:19 | 显示全部楼层
  1. Sub 复制成绩()
  2.     Application.Calculation = xlCalculationManual
  3.     Application.ScreenUpdating = False
  4.     Dim Filename, wb As Workbook, Sh As Worksheet
  5.     Filename = Dir(ThisWorkbook.Path & "\各校成绩单\*.xls")
  6.     Set d = CreateObject("scripting.dictionary")
  7.    
  8.     For Each Sh In ThisWorkbook.Worksheets     '清空原各年级表中数据
  9.         If Sh.Name Like "*年级" Then Sh.[a2:i10000].ClearContents
  10.     Next
  11.    
  12.     Do While Filename <> ""
  13.             fn = ThisWorkbook.Path & "\各校成绩单" & Filename
  14.             Set wb = Workbooks.Open(fn)
  15.             With wb.Worksheets(1)
  16.                 arr = .[a1].CurrentRegion
  17.                 For i = 3 To UBound(arr)
  18.                     nj = arr(i, 2)         '年级所在列
  19.                     If nj Like "*年*" Then
  20.                         nj = Mid(nj, InStr(nj, "年") - 1, 1) & "年级"       '年级
  21.                         If Not d.exists(nj) Then
  22.                             Set d(nj) = .Cells(i, 1).Resize(1, 9)
  23.                         Else
  24.                             Set d(nj) = Union(d(nj), .Cells(i, 1).Resize(1, 9))
  25.                         End If
  26.                     End If
  27.                 Next
  28.             End With
  29.             For Each Sh In ThisWorkbook.Worksheets
  30.                 If Sh.Name Like "*年级" Then
  31.                     If d.exists(Sh.Name) Then
  32.                         r = Sh.[a65536].End(3).Row + 1
  33.                         d(Sh.Name).Copy Sh.Cells(r, 1)
  34.                     End If
  35.                 End If
  36.             Next
  37.             wb.Close False
  38.             d.RemoveAll
  39.         Filename = Dir
  40.     Loop
  41.     Set Sh = Nothing
  42.     Application.Calculation = xlCalculationAutomatic
  43.     Application.ScreenUpdating = True
  44. End Sub
复制代码
回复

使用道具 举报

发表于 2015-7-15 11:20 | 显示全部楼层    本楼为最佳答案   
请看附件。导入的数据只含纯数据,原先中间的那些表头全没了。不影响统计。

新建文件夹.rar

990.24 KB, 下载次数: 10

评分

参与人数 1 +9 收起 理由
武林长风 + 9 赞一个!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2015-7-15 11:44 | 显示全部楼层
grf1973 发表于 2015-7-15 11:20
请看附件。导入的数据只含纯数据,原先中间的那些表头全没了。不影响统计。

成绩单复制时,可否把标题这些加在第一行
序号
学校
姓 名
考号
数学
语文



回复

使用道具 举报

 楼主| 发表于 2015-7-15 12:12 | 显示全部楼层
grf1973 发表于 2015-7-15 11:20
请看附件。导入的数据只含纯数据,原先中间的那些表头全没了。不影响统计。

不麻烦了,我在目标表加上就行了。谢谢!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-25 07:19 , Processed in 0.200928 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表