Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: pjy07

[已解决]如何用VBA将50个EXCEL表格中的行列数据自动提取到另一个excel有编制格式的表格中

[复制链接]
 楼主| 发表于 2017-10-17 23:25 | 显示全部楼层

大师:
你好!
我把你提供的宏运行后,发现提取的数据错误,具体有:数据10---数据25提取错了(数据10对应是文件“数据18”内的数据,数据11对应是文件“数据19”内的数据,数据12对应是文件“数据2”内的数据===),我把“数据1”表格内第一个数据用1表示,比较容易就发现相应提取的错误位置。其他没有错。
111.png

验收数据.rar

124.54 KB, 下载次数: 12

回复

使用道具 举报

发表于 2017-10-21 13:07 | 显示全部楼层
Sub 练习()
Dim sr$, fl$, wb As Workbook, sht As Worksheet
t = Timer
Application.ScreenUpdating = False
sr = ThisWorkbook.Path
Set sht = ThisWorkbook.Sheets("验收")
sht.UsedRange.Clear
With sht
      For i = 1 To 50
          fl = sr & "\数据" & i & ".xls"
          Set wb = Workbooks.Open(fl)
          arr = wb.Sheets(1).Range("a2:d12")
          n = UBound(arr): m = UBound(arr, 2)
          If i < 26 Then
             x = 2
             If i = 1 Then y = 1 Else y = .Cells(x, "iv").End(1).Column + 1
             .Cells(x, y).Resize(n, m) = arr
             r = .[a65536].End(3).Row + 3
          Else
             x = r
             If i = 26 Then y = 1 Else y = .Cells(x, "iv").End(1).Column + 1
             .Cells(x, y).Resize(n, m) = arr
          End If
          x = x - 1
          .Cells(x, y).Resize(1, m).Merge
          .Cells(x, y) = "数据" & i
          wb.Close 1
    Next i
    With .UsedRange
         .Font.Size = 10
         .Columns.AutoFit
         .HorizontalAlignment = xlCenter
         
    End With
End With
Application.ScreenUpdating = True
MsgBox Format(Timer - t, "0.00秒")
End Sub
回复

使用道具 举报

发表于 2017-10-22 09:54 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 10:31 , Processed in 0.295944 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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