excel如何将一个工作簿中的多个工作表合并到一张工作表上?

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-09-11
如何快速把一个excel中多个sheet合并到一张sheet上

用vba可以实现。下面这个程序是读取当前文件夹中所有的excel工作簿,将每个工作簿中的第一张表复制后粘贴到当前工作簿的一个汇总表格中。代码如下:
Sub 合并()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Application.DisplayAlerts = False
Application.CutCopyMode = False
'MYP = "待读取文件"
myw = ActiveWorkbook.Name
Dim FILENAME As String
Dim mypath As String
Dim ZZ As Long
Sheets("原始数据合并").Range("a1:zz1000000").Clear
'mypath = ThisWorkbook.Path & "\" & MYP
mypath = ThisWorkbook.Path
ZZ = 1: XH = 0 'ZZ-写入的位置 xh-序号
MYFILE = Dir(mypath & "\" & "*.xls*")
Do While MYFILE ""
If MYFILE = "" Then
Exit Do '当MyFile为空的时候就说明已经遍历完了,这时退出Do,否则还要运行一遍
End If
If InStr(MYFILE, "编码合并") = 0 Then
XH = XH + 1
Set mybook = Application.Workbooks.Open(mypath & "\" & MYFILE)
Set mysheet = mybook.Sheets(1)
With mysheet
HH = .Cells(100000, 1).End(xlUp).Row
Range(.Cells(1, 1), .Cells(HH, 100)).Select
Selection.Copy
End With
Windows(myw).Activate
Sheets("原始数据合并").Select
Range("B" & ZZ).Select
ActiveSheet.Paste
Range(Cells(ZZ, 1), Cells(ZZ + HH - 1, 1)).Formula = XH
ZZ = ZZ + HH
mybook.Close
End If
MYFILE = Dir '第二次读入的时候不用写参数
Loop
Cells(1, 1) = "编号"
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

如何将一张工作表拆分成多个工作表?

  1. 原始数据所在工作簿包含多个格式相同的工作表,只不过每个工作表内容不同,比如说不同人名的工作表数据或者不同部门填写的数据;

  2. 在原始数据同目录下新建一个工作簿,建立两个工作表,名称分别为“首页”和“合并汇总表”;

  3. 按Alt+F11进入VBA代码编辑和调试界面;

  4. 根据下图提示,插入一个模块;

  5. 将下述代码粘贴到模块空白处:

    Sub CombineSheetsCells()

    Dim wsNewWorksheet As Worksheet

    Dim cel As Range

    Dim DataSource, RowTitle, ColumnTitle, SourceDataRows, SourceDataColumns As Variant

    Dim TitleRow, TitleColumn As Range

    Dim Num As Integer

    Dim DataRows As Long

    DataRows = 1

    Dim TitleArr()

    Dim Choice

    Dim MyName$, MyFileName$, ActiveSheetName$, AddressAll$, AddressRow$, AddressColumn$, FileDir$, DataSheet$, myDelimiter$

    Dim n, i

    n = 1

    i = 1

    Application.DisplayAlerts = False

    Worksheets("合并汇总表").

    DeleteSet wsNewWorksheet = Worksheets.Add(, after:=Worksheets(Worksheets.Count))

    wsNewWorksheet.Name = "合并汇总表"

    MyFileName = Application.GetOpenFilename("Excel工作薄 (*.xls*),*.xls*")

    If MyFileName = "False" Then

    MsgBox "没有选择文件!请重新选择一个被合并文件!", vbInformation, "取消"

    Else

    Workbooks.Open Filename:=MyFileName

    Num = ActiveWorkbook.Sheets.Count

    MyName = ActiveWorkbook.Name

    Set DataSource = Application.InputBox(prompt:="请选择要合并的数据区域:", Type:=8)

    AddressAll = DataSource.Address

    ActiveWorkbook.ActiveSheet.Range(AddressAll).Select

    SourceDataRows = Selection.Rows.Count

    SourceDataColumns = Selection.Columns.Count

    Application.ScreenUpdating = False

    Application.EnableEvents = False

    For i = 1 To Num

    ActiveWorkbook.Sheets(i).Activate

    ActiveWorkbook.Sheets(i).Range(AddressAll).Select

    Selection.Copy

    ActiveSheetName = ActiveWorkbook.ActiveSheet.Name

    Workbooks(ThisWorkbook.Name).Activate

    ActiveWorkbook.Sheets("合并汇总表").Select

    ActiveWorkbook.Sheets("合并汇总表").Range("A" & DataRows).Value = ActiveSheetName

    ActiveWorkbook.Sheets("合并汇总表").Range(Cells(DataRows, 2), Cells(DataRows, 2)).Select

    Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone,

    SkipBlanks:=False, Transpose:=False

    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _

    False, Transpose:=False

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=False

    DataRows = DataRows + SourceDataRows

    Workbooks(MyName).Activate

    Next i

    Application.ScreenUpdating = True

    Application.EnableEvents = True

    End If

    Workbooks(MyName).Close

    End Sub

  6. 在“首页”工作表中按下图示范插入一个窗体控件并指定宏为插入的代码名称;

  7. 点击“首页”工作表中插入的按钮,根据提示,浏览到原始数据工作簿;

  8. 下一步,用鼠标选择要合并的数据范围;

  9. 点击确定按钮,待代码运行完毕后,所有的数据就都合并到了“合并汇总表”中;

  10. 选中全部数据区域,执行自动筛选。然后选择其中一个字段,选择“空白”和标题内容;

  11. 然后将筛选出来的无用行鼠标右键删除,再删除A列整列即可。



楼上代码格式有点BUG,不懂代码的同学可以复制我的,步骤跟楼上一样

Sub CombineSheetsCells()

Dim wsNewWorksheet As Worksheet
Dim cel As Range
Dim DataSource, RowTitle, ColumnTitle, SourceDataRows, SourceDataColumns As Variant
Dim TitleRow, TitleColumn As Range
Dim Num As Integer
Dim DataRows As Long
DataRows = 1
Dim TitleArr()
Dim Choice
Dim MyName$, MyFileName$, ActiveSheetName$, AddressAll$, AddressRow$, AddressColumn$, FileDir$, DataSheet$, myDelimiter$
Dim n, i
n = 1
i = 1
Application.DisplayAlerts = False
Worksheets("合并汇总表").Delete
Set wsNewWorksheet = Worksheets.Add(, after:=Worksheets(Worksheets.Count))
wsNewWorksheet.Name = "合并汇总表"

MyFileName = Application.GetOpenFilename("Excel工作薄 (*.xls*),*.xls*")

If MyFileName = "False" Then
MsgBox "没有选择文件!请重新选择一个被合并文件!", vbInformation, "取消"

Else

Workbooks.Open Filename:=MyFileName

Num = ActiveWorkbook.Sheets.Count
MyName = ActiveWorkbook.Name
Set DataSource = Application.InputBox(prompt:="请选择要合并的数据区域:", Type:=8)
AddressAll = DataSource.Address
ActiveWorkbook.ActiveSheet.Range(AddressAll).Select

SourceDataRows = Selection.Rows.Count
SourceDataColumns = Selection.Columns.Count
Application.ScreenUpdating = False
Application.EnableEvents = False

For i = 1 To Num
ActiveWorkbook.Sheets(i).Activate
ActiveWorkbook.Sheets(i).Range(AddressAll).Select
Selection.Copy

ActiveSheetName = ActiveWorkbook.ActiveSheet.Name
Workbooks(ThisWorkbook.Name).Activate
ActiveWorkbook.Sheets("合并汇总表").Select

ActiveWorkbook.Sheets("合并汇总表").Range("A" & DataRows).Value = ActiveSheetName
ActiveWorkbook.Sheets("合并汇总表").Range(Cells(DataRows, 2), Cells(DataRows, 2)).Select

Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

DataRows = DataRows + SourceDataRows

Workbooks(MyName).Activate

Next i

Application.ScreenUpdating = True

Application.EnableEvents = True

End If

Workbooks(MyName).Close
End Sub

这个程序有点bug 该怎么调试?

  • 一个Excel工作簿中的多个工作表怎么拆分成独立表格?
    答:1、打开「表格(Excel)」文档;2、点击「数据-拆分表格」;3、按需选择「把工作表按照内容拆分」或「把工作簿按照工作表拆分」使用即可。
  • 怎么在一个工作表中显示多个工作簿
    答:1、打开EXCEL,单击【视图】——【切换窗口】,可以在多个文档之间相互切换,如图所示。2、可以点击【并排查看】,弹出选择并排比较的表格,可以对比两个表格 3、在任一个工作表中,操作“视图——全部重排——垂直并排”,也可以让工作簿在一个窗口中显示。4、点击【文件】——【选项】——【高级】—...
  • 一个excel工作簿中的多个工作表怎么批量打印?
    答:1. 首先打开电脑上的Excel表格,如图,我们需要打印sheet1、sheet2、sheet3三个工作表的内容;2. 首先将sheet1选中,按键盘上的CTRL 键后,依次点击sheet2、sheet3,将三个工作表全部选中;3. 点击页面上方的打印预览图标;4. 进入打印预览界面,这是sheet1打印界面;5. 如图,在左下角通过切换页码...
  • 一个Excel工作簿中的多个工作表怎么拆分成独立表格?
    答:要将一个Excel工作簿中的多个工作表拆分成独立表格,操作相当简单。首先,打开需要拆分的工作簿,找到你想要分离的工作表。接着,右键点击该工作表标签,选择“移动或复制工作表”选项。在随后弹出的窗口中,你会发现一个下拉菜单,从中选择“新工作簿”。如果你想创建工作表的副本,确保勾选“建立副本”...
  • 如何将一个 Excel 工作簿中的多个工作表合并成一个工作表?
    答:1、首先打开任意一张Excel表格,点击数据,再点击新建查询,页面弹出选项,点击从文件,再点击从工作薄。2、页面跳转,选择需要合并工作表的第一张表格。3、选择好后,点击导入。4、进入导航器,勾选选择多项,再勾选弹出的Excel表格。5、最后点击页面右下方的编辑。6、进入查询编辑器,点击新建源,再...
  • 如何将多个工作表同时显示在一个工作簿中?
    答:1、打开任意一个Excel表格!点击左上角按钮!再点击“Excel选项”菜单。在打开“Excel选项”菜单中选择高级选项。然后找到“显示”菜单下的“在任务栏中显示所有窗口”,把前面的框框打上钩。2、如图所示,工作薄中有两个工作表,现在把这两个工作表同时显示在当前的窗口当中。完成上一步之后,在其中一...
  • 怎么将Excel多个工作表拆分成多个单独的Excel
    答:将一个Excel工作簿中的多个工作表(sheet)拆分成如下图所示结果 打开需要拆分的excel,在任意工作表右击,点击“查看代码”在打开的窗口中输入如下代码: Private Sub 分拆工作表() Dim sht As Worksheet Dim MyBook As Workbook Set MyBook = ActiveWorkbook For Each sht In MyBook.Sheets sht.Copy ...
  • 史上最全!Excel 如何合并多个工作表或多个工作簿?
    答:方法一:Windows批处理命令 首先我们需要将Excel表格文件另存为CSV文件,这一步可以通过VBA批量操作。打开任意工作簿,调出Visual Basic界面,输入以下代码(如何插入代码上面有介绍,这里不再赘述):Sub xlsxtocsv()Application.ScreenUpdating=False Application.DisplayAlerts=False t=ActiveWorkbook.Name mypath...
  • 如何将一个 Excel 工作簿中的多个工作表合并成一个工作表?
    答:第一种方法是手工复制粘贴;第二种是用函数公式取值合并;第三种是用VBA编程处理;第四种是用WPS表格中的“合并工作表”功能实现。
  • 在Excel 中同时显示一个工作簿中的多个工作表
    答:启动 Excel,默认情况下显示一个打开的工作簿,该工作簿中的工作表,以“标签”的形式排列在窗口左下角;同一时刻只有一个工作表处于可见状态。 现在,点击“视图”选项卡。视图选项卡分成“工作簿视图”、“显示/隐藏”、“显示比例”、“窗口”等几个功能组。 本经验主要使用“窗口”里的按钮。先...