Excel精英培训网

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

[已解决]多个表提取相同Sheet名,相同位置单元格数据汇总到同一个Sheet

[复制链接]
发表于 2017-2-16 20:01 | 显示全部楼层 |阅读模式
本帖最后由 jk0932 于 2017-2-21 15:26 编辑

如附件所示:现举例如附件,
有若干个workbook名字为A表~E表(实际中可能变化),需要提取每个表中Sheet名字为XX的E8~F9,4个单元格的数据放入《结果》表中,结果示范如下:
标黄的列是单元格位置:表名的行填入提取的workbook名称,提取结果填入对应的位置
[tr]  [td=72]表名[/td]  [td=72]A表[/td]  [td=72]B表[/td]  [td=72]C表[/td]  [td=72]D表[/td]  [td=72]E表[/td] [/tr]
[tr]  [td]E8[/td]  [td]A1[/td]  [td]A1[/td]  [td]A1[/td]  [td]A1[/td]  [td]A1[/td] [/tr]
[tr]  [td]E9[/td]  [td]A3[/td]  [td]A3[/td]  [td]A3[/td]  [td]A3[/td]  [td]A3[/td] [/tr]
[tr]  [td]F8[/td]  [td]A2[/td]  [td]A2[/td]  [td]A2[/td]  [td]A2[/td]  [td]A2[/td] [/tr]
[tr]  [td]F9[/td]  [td]A4[/td]  [td]A4[/td]  [td]A4[/td]  [td]A4[/td]  [td]A4[/td] [/tr]
最佳答案
2017-2-18 11:22
写的丑了点 N久没写了 将就下吧
  1. Sub test()
  2.     Dim mso As Object
  3.     Dim fileName As String
  4.     Dim folderName As String
  5.     Dim wb As String
  6.     Dim arr
  7.     Dim cloumn As Integer
  8.     Dim row As Integer
  9.    
  10.     wb = ThisWorkbook.Name
  11.     Set mso = Application.FileDialog(msoFileDialogFolderPicker)
  12.    
  13.     If mso.Show = -1 Then
  14.           '  MsgBox "您选择的文件夹是:" & mso.SelectedItems(1), vbOKOnly + vbInformation, "智能Excel"
  15.     Else
  16.         Exit Sub
  17.     End If
  18.    
  19.     folderName = mso.SelectedItems(1)
  20.     fileName = Dir(folderName & "/*.xlsx")
  21.    
  22.     Do While fileName <> ""
  23.         Workbooks.Open (folderName & "/" & fileName)
  24.         arr = Workbooks(fileName).Sheets("xx").Range("e8:f9")
  25.         Column = Workbooks(wb).Sheets("xx").Range("xfd1").End(xlToLeft).Column + 1
  26.         Workbooks(fileName).Sheets("xx").Range("e8:e9").Copy Destination:=Workbooks(wb).Sheets("xx").Cells(2, Column)
  27.         Workbooks(fileName).Sheets("xx").Range("f8:f9").Copy Destination:=Workbooks(wb).Sheets("xx").Cells(4, Column)
  28.         Workbooks(wb).Sheets("xx").Cells(1, Column) = fileName
  29.         fileName = Dir
  30.     Loop

  31. End Sub
复制代码

求助.rar

41.37 KB, 下载次数: 15

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-2-18 11:22 | 显示全部楼层    本楼为最佳答案   
写的丑了点 N久没写了 将就下吧
  1. Sub test()
  2.     Dim mso As Object
  3.     Dim fileName As String
  4.     Dim folderName As String
  5.     Dim wb As String
  6.     Dim arr
  7.     Dim cloumn As Integer
  8.     Dim row As Integer
  9.    
  10.     wb = ThisWorkbook.Name
  11.     Set mso = Application.FileDialog(msoFileDialogFolderPicker)
  12.    
  13.     If mso.Show = -1 Then
  14.           '  MsgBox "您选择的文件夹是:" & mso.SelectedItems(1), vbOKOnly + vbInformation, "智能Excel"
  15.     Else
  16.         Exit Sub
  17.     End If
  18.    
  19.     folderName = mso.SelectedItems(1)
  20.     fileName = Dir(folderName & "/*.xlsx")
  21.    
  22.     Do While fileName <> ""
  23.         Workbooks.Open (folderName & "/" & fileName)
  24.         arr = Workbooks(fileName).Sheets("xx").Range("e8:f9")
  25.         Column = Workbooks(wb).Sheets("xx").Range("xfd1").End(xlToLeft).Column + 1
  26.         Workbooks(fileName).Sheets("xx").Range("e8:e9").Copy Destination:=Workbooks(wb).Sheets("xx").Cells(2, Column)
  27.         Workbooks(fileName).Sheets("xx").Range("f8:f9").Copy Destination:=Workbooks(wb).Sheets("xx").Cells(4, Column)
  28.         Workbooks(wb).Sheets("xx").Cells(1, Column) = fileName
  29.         fileName = Dir
  30.     Loop

  31. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 14:44 , Processed in 0.281992 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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