ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: monstere2

[求助] 挑战性问题!表头顺序不同(但表头字段相同)的多个表格如何汇总?着急!感谢大神!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-3-8 23:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
see if help you
Put all files under the same folder

附件 v1.rar

45.37 KB, 下载次数: 81

TA的精华主题

TA的得分主题

发表于 2014-3-9 11:39 | 显示全部楼层
本帖最后由 jbjbzjb 于 2014-3-9 11:43 编辑

fdkjfkdjfkjakfjdkjfkjda

事后补:
1.汇总记录工作簿中的汇总表表头字段位置可任意;
2.汇总记录工作簿中的汇总表表头字段数可增减,但至少保证5个,因为判断目标工作表的依据是同一行至少5个字段名相同;

附件.rar

41.23 KB, 下载次数: 57

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-3-9 15:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 张雄友 于 2014-3-9 15:57 编辑
jbjbzjb 发表于 2014-3-9 11:39
fdkjfkdjfkjakfjdkjfkjda

事后补:


是合并工作表吧?表头不是自动生成的?

TA的精华主题

TA的得分主题

发表于 2014-3-9 15:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
KCFONG 发表于 2014-3-8 23:55
see if help you
Put all files under the same folder

the answer in columns(a:a) is wrong.all rows are 453.but your are 524?

TA的精华主题

TA的得分主题

发表于 2014-3-9 16:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Sub test()
  2.   Dim d As New Dictionary
  3.   Dim cnn As New ADODB.Connection
  4.   Dim rs As New ADODB.Recordset
  5.   Dim sql$, mybook$, mysheet$, mypath$, wjm$
  6.   Dim arr
  7.   Dim wb As Workbook
  8.   Dim ws0 As Worksheet
  9.   Dim ws As Worksheet
  10.   Dim i%, r0%, r%
  11.   
  12.   Application.DisplayAlerts = False
  13.   mybook = ThisWorkbook.FullName
  14.   
  15.   With cnn
  16.     .Provider = "microsoft.jet.oledb.4.0"
  17.     .ConnectionString = "extended properties=""excel 8.0;HDR=YES;IMEX=1"";data source=" & mybook
  18.     .Open
  19.   End With
  20.   
  21.   mypath = ThisWorkbook.Path & ""
  22.   wjm = Dir(mypath & "*.xls")
  23.   
  24.   Do While wjm <> ""
  25.     If wjm <> "汇总数据.xls" Then
  26.       d(wjm) = ""
  27.     End If
  28.     wjm = Dir()
  29.   Loop
  30.   
  31.   kk = d.Keys
  32.   d.RemoveAll
  33.   
  34.   For i = 0 To UBound(kk)
  35.     sql = "select * from [Excel 8.0;database=" & mypath & kk(i) & "].[sheet1$]"
  36.     rs.Open sql, cnn, adOpenKeyset, adLockOptimistic
  37.     For j = 0 To rs.Fields.Count - 1
  38.       d(rs.Fields(j).Name) = ""
  39.     Next
  40.     rs.Close
  41.   Next
  42.   
  43.   For Each aa In d.Keys
  44.     If aa Like "F#" Or aa Like "F##" Then
  45.       d.Remove aa
  46.     End If
  47.   Next
  48.   
  49.   m = 1
  50.   For Each aa In d.Keys
  51.     d(aa) = m
  52.     m = m + 1
  53.   Next
  54.   
  55.   With ThisWorkbook.Worksheets("sheet1")
  56.     .Cells.Delete
  57.     .Range("a1").Resize(1, d.Count) = d.Keys
  58.   End With
  59.   
  60.   Set ws0 = ThisWorkbook.Worksheets("sheet1")
  61.   For i = 0 To UBound(kk)
  62.     Set wb = GetObject(mypath & kk(i))
  63.     With ws0
  64.       r0 = .Range("a1").CurrentRegion.Rows.Count
  65.     End With
  66.     With wb
  67.       With .Worksheets(1)
  68.         c = .Cells(1, Columns.Count).End(xlToLeft).Column
  69.         r = .Cells(.Rows.Count, 1).End(xlUp).Row
  70.         For j = 1 To c
  71.           .Cells(2, j).Resize(r - 1, 1).Copy ws0.Cells(r0 + 1, d(.Cells(1, j).Value))
  72.         Next
  73.       End With
  74.     End With
  75.     wb.Close
  76.   Next
  77.          
  78.   cnn.Close
  79.   Set fso = Nothing
  80.   Set rs = Nothing
  81.   Set cnn = Nothing
  82.   Application.DisplayAlerts = True
  83. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2014-3-9 16:23 | 显示全部楼层
chxw68 发表于 2014-3-9 16:19

Dim rs As New ADODB.Recordset

需要引用哪个?

TA的精华主题

TA的得分主题

发表于 2014-3-9 16:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
采用ADO+SQL的办法自动提取各表表头取重以后自动生成汇总表格表头,然后按照Dsmch老师的办法,逐一打开要汇总的工作薄,逐列依次拷入汇总表的对应列,这样就不用考虑工作表表头全不全的问题了。
原打算使用ADO+SQL的INSETR INTO语句读取、写入汇总数据,但由于要汇总的工作表表头字段名中含有空格等字符没有成功。

附件.rar

75.58 KB, 下载次数: 130

TA的精华主题

TA的得分主题

发表于 2014-3-9 16:30 | 显示全部楼层
张雄友 发表于 2014-3-9 16:23
Dim rs As New ADODB.Recordset

需要引用哪个?

引用“Microsoft ActiveX Datea Objects 2.8 Library”

TA的精华主题

TA的得分主题

发表于 2014-3-9 16:40 | 显示全部楼层
chxw68 发表于 2014-3-9 16:30
引用“Microsoft ActiveX Datea Objects 2.8 Library”

sql = "select * from [Excel 8.0;database=" & mypath & kk(i) & "].[sheet1$]"

是不是只可以合并所有工作簿的sheet1,如有sheet2,sheet3就不行了?

TA的精华主题

TA的得分主题

发表于 2014-3-9 16:42 | 显示全部楼层
张雄友 发表于 2014-3-9 15:58
the answer in columns(a:a) is wrong.all rows are 453.but your are 524?

you had 2 SHIPPER NAME column in dec.01&02.2007.xls (column A and column C)
???
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-27 05:16 , Processed in 0.035301 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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