Excel简单宏定义(Microsoft 版)(快速合并多个表格,合并多个工作表,合并特定工作表)


前言

Excel简单宏定义(Microsoft 版)(快速合并多个表格,合并多个工作表,合并特定工作表)


具体操作

1. 合并当前工作簿下的所有工作表

当前表格中有两个工作表为Sheet1和Sheet2,目的: 将两个表合并为一个表Sheet1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
输入代码并运行

在这里插入图片描述

Sub 合并当前工作簿下的所有工作表()
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set st = Worksheets.Add(before:=Sheets(1))
st.Name = "合并"
For Each shet In Sheets:
If shet.Name <> "合并" Then
i = st.Range("A" & Rows.Count).End(xlUp).Row + 1
shet.UsedRange.Copy
st.Cells(i, 1).PasteSpecial Paste:=xlPasteAll
End If
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "已完成"
End Sub

在这里插入图片描述

2. 合并当前目录下工作簿中特定工作表

当前目录下中有三个表格为工作表1 、工作表2、工作表3,目的: 将三个表格中的第二个工作表合并为一个表格-工作表1

在这里插入图片描述
三个表格是一样的,这里就不在每个都展示图片了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Sub 合并当前目录下工作簿中特定工作表()
Application.ScreenUpdating = False

Dim wb, wb1 As Excel.Workbook

Dim sh As Excel.Worksheet

s = Split(ThisWorkbook.Name, ".")(1)

f = Dir(ThisWorkbook.Path & "\*" & s) '生成查找EXCEL的目录

Do While f <> "" '在目录中循环

    If f <> ThisWorkbook.Name Then  '如果不是打开的工作簿

        Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & f)

        wb.Worksheets("sheet2").Copy after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count) '查找每个工作簿中的第二个工作表

        ActiveSheet.Name = Split(wb.Name, ".")(0)

        wb.Close

    End If

    f = Dir

Loop

Application.ScreenUpdating = True

MsgBox "已完成"

End Sub

3. 合并当前目录下所有工作簿的全部工作表

当前目录有两个表格:工作表1(sheet1)、工作表2(sheet1),目的: 将当前目录下,两个表格里面的所有工作表合并为一个工作表sheet1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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 & "\" & "*.xlsx") 'xlsx文件类型

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简单宏定义(Microsoft 版)(快速合并多个表格,合并多个工作表,合并特定工作表)


  • 11
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
您可以使用VBA编写一个宏来合并多个Excel文件的不同工作到同一个Excel文件中。以下是一个示例代码: ```VBA Sub MergeWorksheets() Dim path As String Dim currentWB As Workbook, targetWB As Workbook Dim currentWS As Worksheet, targetWS As Worksheet Dim currentRow As Long, lastRow As Long '选择目标工作簿 Set targetWB = Application.Workbooks.Open("C:\TargetWorkbook.xlsx") '选择源工作簿所在文件夹 path = Application.GetOpenFilename(filefilter:="Excel Files (*.xls*),*.xls*", Title:="Select Files to Merge", MultiSelect:=True) '循环遍历每个源工作簿中的每个工作 For i = LBound(path) To UBound(path) Set currentWB = Application.Workbooks.Open(path(i)) For Each currentWS In currentWB.Worksheets '在目标工作簿中添加新工作 Set targetWS = targetWB.Worksheets.Add(After:=targetWB.Worksheets(targetWB.Worksheets.Count)) '将当前工作的数据复制到目标工作簿的新工作中 currentWS.UsedRange.Copy targetWS.Range("A1") '调整目标工作的格式 With targetWS .Cells.EntireColumn.AutoFit lastRow = .Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row .ListObjects.Add(xlSrcRange, Range("A1:D" & lastRow), , xlYes).Name = "Table1" .ListObjects("Table1").TableStyle = "TableStyleMedium2" End With Next currentWS '关闭源工作簿 currentWB.Close False Next i '保存目标工作簿 targetWB.Save '关闭目标工作簿 targetWB.Close End Sub ``` 在运行此宏之前,请确保将目标工作簿的文件路径更改为您要将工作合并到的实际文件路径。您还可以根据需要进行其他格式更改。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sky-stars

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值