将多个excel文件中的同名sheet分别合并到总表

n个excel表格,每个表格中分别有sheet1,sheet2,sheet3等多个标签页,我想快速合并成一个excel,sheet1,sheet2,sheet3等多个标签页分别合并。
就是总表中的sheet1,sheet2,sheet3等标签页是各个分表中的标签页的总和,而不是合并到一个sheet。

用VBA代码也是可以的.

新建一个excel,在sheet1,2,3其中一个sheet中建一个按钮,把下面的代码复制到按钮里面去,

在建按钮的这个sheet里面A列输入文件路径和名称,B列输入文件名称

Private Sub CommandButton2_Click()
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For i = 1 To Range("a65536").End(xlUp).Row
Workbooks.Open Range("a" & i)
If Err.Number = 4 Then
  MsgBox Range("b" & i) & "表未打开,请检查路径或表名是否正确"
  Err.Clear
 Else
  With Workbooks(Trim(Range("b" & i))).Worksheets("sheet1")
     row1 = .Range("a65536").End(xlUp).Row
     .Range("a1:iv" & row1).Copy ThisWorkbook.Worksheets("sheet1").Range("a" & ThisWorkbook.Worksheets("sheet1").Range("a65536").End(xlUp).Row + 1)
  End With
  
  With Workbooks(Trim(Range("b" & i))).Worksheets("sheet2")
     row2 = .Range("a65536").End(xlUp).Row
     .Range("a1:iv" & row2).Copy ThisWorkbook.Worksheets("sheet2").Range("a" & ThisWorkbook.Worksheets("sheet2").Range("a65536").End(xlUp).Row + 1)
  End With
  
  With Workbooks(Trim(Range("b" & i))).Worksheets("sheet3")
     row3 = .Range("a65536").End(xlUp).Row
    .Range("a1:iv" & row3).Copy ThisWorkbook.Worksheets("sheet3").Range("a" & ThisWorkbook.Worksheets("sheet3").Range("a65536").End(xlUp).Row + 1)
   End With
End If
Workbooks(Trim(Range("b" & i))).Close False
Next i
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-09-12
1.新建一个.txt文本文件,就命名为“合并.txt”吧。
2.然后打开文件,复制以下代码到文件中:
@echo off
E:
cd xls
dir
copy *.csv all_keywords.csv
echo @@@@@@@@@@@@@合并成功!@@@@@@@@@@@@@'
pause
*****************************
3.复制好代码后,保存并关闭txt文件,然后将.txt后缀改为.bat,这样合并程序就做好了:
4.给存放excel文件找个硬盘,以E盘为例,在E盘中创建一个新的文件夹,命名为“xls”:
5.将需要合并的csv文件或xls文件放到文件夹中:
6. 双击合并.bat,工具会自动运行合并任务,速度相当快,不过多少个文件,几秒钟就搞定。
7.查看xls文件夹,生成了一个合并文件all_keywords.csv,这样我们的excel合并工作就完成了。本回答被网友采纳
第2个回答  2016-01-15
VB代码实现方法如下:
Sub 汇总数据()
Sheets.Add
With ActiveSheet
.Name = "汇总表" & Format(Now, "hhmmss")
For Each s In ThisWorkbook.Sheets
s.UsedRange.Copy .Cells(.UsedRange.Rows.Count + 1, 1)
Next
End With
End Sub
第3个回答  2014-09-12
这要用VBA编程来实现
第4个回答  2014-09-12
私信给我 把文件传给我
相似回答