excel表格合并

如何将若干个有统一表头xls(定义名称:数据表:1.xls\2.xls\3.xls)合并成一个xls(定义名称:数据合并:合并.xlsx)。

2019年10月18日

windows10上尝试通过vba代码实现:

流程1:

在网上查找相关代码:‘代码表’:1https://www.cnblogs.com/wangcan/p/3892212.html

代码表:1
Sub 合并当前目录下所有工作簿的全部工作表()
    Dim MyPath, MyName, AWbName
    Dim Wb As Workbook, WbN As String
    Dim G As Long
    Dim Num As Long
    Dim BOX As String
    flag = 0
    
    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
                For G = 1 To Sheets.Count
                    If flag = 0 Then
                        Wb.Sheets(G).UsedRange.Copy .Cells(.Range("A65536").End(xlUp).Row , 1)
                        flag = 1
                    Else
                        Wb.Sheets(G).Range("a2", Wb.Sheets(G).Cells.SpecialCells(xlCellTypeLastCell)).Copy .Cells(.Range("A65536").End(xlUp).Row + 1, 1)

                    End If
                Next
                WbN = WbN & Chr(13) & Wb.Name
                Wb.Close False
            End With
        End If
        MyName = Dir
    Loop
        Range("A1").Select
        
        
    Application.ScreenUpdating = True
    MsgBox "共合并了" & Num & "个工作薄下的全部工作表。如下:" & Chr(13) & WbN, vbInformation, "提示"
End Sub
 

操作流程:

  1. 将要合并的数据表放在同一文件夹下,复制过来就好
  2. 在这个目录下创建一个“合并.xlsx”
  3. 双击打开“合并.xlsx”
  4. 同时按 ALT + F11
  5. 出现vba编辑界面,在界面中输入代码表1的内容。
  6. 运行

操作结果:

1、合并后表格的1:1,复制成功。

2、合并后表格的2:2,复制了N1:U1下数据表3的内容,其他数据未能成功复制。

流程2: 

通过录制宏理解‘代码表1’的代码:

保留表头顺序将数据表:1.xls\2.xls\3.xls表头下的数据复制到,合并xlsx。

得到代码:代码表2。

 代码表2

Sub 宏1()
'
' 宏1 宏
'

'
    Windows("1.xls").Activate
    Rows("1:5").Select
    Range("F1").Activate
    Selection.Copy
    Windows("合并.xlsx").Activate
    ActiveSheet.Paste
    Windows("2.xls").Activate
    Rows("2:4").Select
    Range("I4").Activate
    Application.CutCopyMode = False
    Selection.Copy
    Application.CutCopyMode = False
    Selection.Copy
    Windows("合并.xlsx").Activate
    Range("A6").Select
    ActiveSheet.Paste
    Windows("3.xls").Activate
    Rows("2:2").Select
    Range("L2").Activate
    Application.CutCopyMode = False
    Selection.Copy
    Windows("合并.xlsx").Activate
    Range("A9").Select
    ActiveSheet.Paste
End Sub

猜你喜欢

转载自www.cnblogs.com/lwkeny/p/11697501.html