-
如何合并多个
excel
文件!
有一个文件夹下有很多个
excel
文件,每个
excel
里面
只有一个表。怎么将这些表合并到一
个
EXCEL
文件中
常见问题
,
执行下面的宏
Sub huizhong()
Dim fd As FileDialog
Dim
Wbook As Workbook
Dim rowindex As
Integer
Set fd =
alog(msoFileDialogFilePicker)
Dim vrtSelectedItem As Variant
With fd
.
文件
过滤
If .Show = -1 Then
rowindex
= 1
For Each
vrtSelectedItem In .SelectedItems
Set
Wbook = (vrtSelectedItem)
subrowindex =
1 '
每个表从第一行开始
Do
While eets(
'
假设被汇总的
excel
文件名为
综合表
表名为
sheet1
.
Workbooks(
综
合
表
.xls
1)
eets(
以下是对每一行进行赋值
Workbooks(
综
合
表
.xls
2)
eets(
subrowindex =
subrowindex + 1
rowindex = rowindex + 1
Loop
Next
vrtSelectedItem
Else
End If
End With
Set fd = Nothing
End Sub
=
=
运行后再选择要合并的文档,
Sub aa()
Dim fd As
FileDialog
Dim Wbook As Workbook
Dim rowindex As Integer
Set
fd = alog(msoFileDialogFilePicker)
Dim vrtSelectedItem As Variant
With fd
.
文件
过滤
If .Show = -1 Then
rowindex
= 1
For Each
vrtSelectedItem In .SelectedItems
Set
Wbook = (vrtSelectedItem)
subrowindex =
1 '
每个表从第一行开始
Do
While eets(
'
假设被汇总的
excel
文件名为
新建
Microsoft Excel
工作表
表名为
sheet1.
Workbooks(
新建
Microsoft
Excel
工
作表
.xls
eets(
以下是对每一
行进行赋值
Workbooks(
新建
Microsoft
Excel
工
作表
.xls
eets(
Workbo
oks(
新建
Microsoft
Excel
工作表
.xls
eets(
Workbooks(
新建
Microsoft
Excel
工作表
.xls
eets(
Workbooks(
新建
Microsoft
Excel
工
作表
.xls
eets(
Workbo
oks(
新建
Microsoft
Excel
工作表
.xls
eets(
Workbooks(
新建
Microsoft
Excel
工作表
.xls
eets(
Workbooks(
新建
Microsoft
Excel
工
作表
.xls
eets(
Workbo
oks(
新建
Microsoft
Excel
工作表
.xls
eets(
subrowindex = subrowindex +
1
rowindex = rowindex + 1
Loop
1)
=
2)
=
3)
=
4)
=
5)
=
6)
=
7)
=
8)
=
9)
=
Next
vrtSelectedItem
Else
End If
End With
Set fd = Nothing
End Sub
通过<
/p>
VBA
宏合并
Excel
工作表
今天火车票到手,最重要的事情搞定啦,庆祝一下
~
昨天跟盼盼说要写一篇她看得懂的,小路从来都是言而有信的
人
~
想了半天,对于
Excel
,
我只会玩宏,所以有了这一篇日志
~
咳咳,切入正题。工作中经常会用到的把几个
Excel
文件合并到一个,或者是把一个
Excel
文件里的所有
Sheet
合并到一个<
/p>
Sheet
来进行统计。下面分别提供用
vba
宏来解决这两个问
题的方法
~
1.
合并
Excel
文件
< br>打开一个空
Excel
文件,
A
lt+F11
,插入一个模块,开始写代码吧:
查看源码
打印关于
Sub MergeWorkbooks()
Dim
FileSet
Dim i As Integer
On
Error GoTo 0
Updating = False
FileSet
=
nFilename(FileFilter:=
2003(*.xls),
*.xls,Excel
2007(*.xlsx),*.xlsx
MultiSelect:=True,
Title:=
选择要合并的文件
If
TypeName(FileSet) =
GoTo ExitSub
End
If
For Each Filename In FileSet
Filename
Sheets().Move
After:=()
Next
ExitSub:
Updating = True
End Sub
这段代码在干嘛?它首先打开一个文件选择框,
你可以选择一个或多个文件,<
/p>
然后把这些文
件里的所有
Sheet
p>
合并到当前这个工作簿里来,有重名的
Sheet
< br>会自动在后面加数字。嗯,
接下来可以进行第二歩鸟
~
2.
合并工作表
同上,再添加一个模块吧,代码如下
查看源码
打印关于
Function LastRow(sh As Worksheet)
On Error Resume Next
LastRow =
(what:=
After:=(
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On
Error GoTo 0
End Function
Sub
MergeSheets()
Dim sh As Worksheet
Dim DestSh As Worksheet
Dim
Last As Long
Dim shLast As Long
Dim CopyRng As
Range
Dim StartRow As Long
Updating = False
Events = False
'
新建一个“汇总”工作表
yAlerts = False
On Error Resume Next
eet
s(
汇总
On Error GoTo 0
yAlerts = True
Set DestSh =
=
汇总
'
p>
开始复制的行号,忽略表头,无表头请设置成
1
StartRow = 2
For Each sh In eets
If <> Then
Last =
LastRow(DestSh)
shLast =
LastRow(sh)
If
shLast > 0 And shLast >= StartRow Then
Set CopyRng = ((StartRow), (shLast))
If Last + > Then
MsgBox
内容太多放不下啦!
GoTo ExitSub
End If
With (Last + 1,
.PasteSpecial
xlPasteValues
.PasteSpecial
xlPasteFormats
yMode = False
End With
End
If
End
If
Next
ExitSub:
(1)
t
Updating = True
Events = True
End Sub
这一大坨又在干嘛?它会新建一个叫做
“汇总”
的工作
表,
然后把当前工作簿里的所有
Sheet
里有数据的内容都复制到“汇总”表里。提示:如果数据表里的内容没有表头的话需要把
StartRow = 2
改成
StartRow =
1
哦。
-
-
-
-
-
-
-
-
-
上一篇:网球王子中的实力排名
下一篇:仙剑奇侠传全地图效率练级练法术攻略