| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3126 人关注过本帖
标题:关于Excel多个表合并,不同表头,以最多的位置!
只看楼主 加入收藏
脾气爷
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-6-25
收藏
 问题点数:0 回复次数:2 
关于Excel多个表合并,不同表头,以最多的位置!
Sub 合并当前目录下所有工作簿的全部工作表()
Dim MyPath, MyName, AWbName
Dim Wb As workbook, WbN As String
Dim G As Long
Dim Num As Long
Dim BOX As String
Application.ScreenUpdating = False
MyPath = ActiveWorkbook.Path
MyName = Dir(MyPath & "\" & "*.xls")
AWbName = ActiveWorkbook.Name
Num = 0
Do While MyName <> ""
If MyName <> AWbName Then
Set Wb = Workbooks.Open(MyPath & "\" & MyName)
Num = Num + 1
With Workbooks(1).ActiveSheet
.Cells(.Range("B65536").End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4)
For G = 1 To Sheets.Count
Wb.Sheets(G).UsedRange.Copy .Cells(.Range("B65536").End(xlUp).Row + 1, 1)
Next
WbN = WbN & Chr(13) & Wb.Name
Wb.Close False
End With
End If
MyName = Dir
Loop
Range("B1").Select
Application.ScreenUpdating = True
MsgBox "共合并了" & Num & "个工作薄下的全部工作表。如下:" & Chr(13) & WbN, vbInformation, "提示"
End Sub
搜索更多相关主题的帖子: 工作表 Excel 
2015-06-25 12:32
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:0 
回复 楼主 脾气爷
不明白.
如果是想合并工作表,参见如何用VB控制Excel文件? https://bbs.bccn.net/redirect.php?goto=findpost&pid=2480216&ptid=443738

大开眼界
2015-06-25 16:25
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
感觉,用 EXCEL 做这个事,限制非常多,很烦。
只是想了一下流程:
想到的目前是: 数据不按行合并。不同表的数据只能写到不同行,不能写到同一行。也就是不按关键字合并行数据。
不支持合并了的表头,不支持多行表头。

一、第一种方法
优点是功能划分明确,简单易懂
缺点是需要读二遍EXCEL,运行速度更慢。
1、统计字段名
打开所有的表,然后读所有的表头,去重,然后生成字段名总列表。
新建工作簿,把字段总列表写进去,并且同时保存每个字段对应的列号。

2、从第一张开始,读该表的表头,然后查 字段对应的列号,生成各列应该写到新表中的列,
使用这个列,把所有的数据,按行,一个格子一个格子的读,然后计算出新的坐标,写入新表。
直到最后一张表为止。


二、第二种方法
优点:所有文件只需要读一遍,运行速度比第一种快
缺点:大量使用动态数据,新手容易搞迷糊来。
初始化一个字段名总列表,使用动态数组
开始可以定义大一点,如 100个元素。另一个标志变量指示使用到了那个元素
打开第一张表,新建工作簿
查现在有字段名总列表,如果发现该元素没在总列表中,
写入新建工作簿的表头位置,同时保存名字到总列表,标志变量修正。临时保存表一的 字段名和列号对应表
查完所有字段后,写入该表数据。
继续第二张表,也是先查表找列号,如果没找到的,就追加表头。

授人于鱼,不如授人于渔
早已停用QQ了
2015-06-26 11:50
快速回复:关于Excel多个表合并,不同表头,以最多的位置!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.050657 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved