VBA——合併工作簿與合併工作表

合併工作簿與合併工作表,是Excel數據處理永恆的話題。原來韓老師講過用SQL語句,還講過 ,今天給大家兩組代碼,每次需要合併工作簿與或是工作表時,複製過來使用就好了。

合併工作簿

代碼如下(代碼橫屏觀看效果更好):

<code>Sub 合併工作薄()
Dim FileOpen          '定義打開文件變量
Dim i As Integer      '定義打開文件個數變量
Application.ScreenUpdating = False       '關閉屏幕更新,避免合併時屏幕閃爍
FileOpen = Application.GetOpenFilename(FileFilter:="Microsoft Excel文件(.xlsx),.xlsx", MultiSelect:=True)  '打開文件類型為.xlsx,並可以打開多個
i = 1
Do While i <= UBound(FileOpen)
    Workbooks.Open Filename:=FileOpen(i)
Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)           '將需要合併的工作薄中工作表合併到最後一個工作表
    i = i + 1
Loop
Application.ScreenUpdating = True     '打開屏幕更新
MsgBox "已完成合並"                   '合併完成並提示
End Sub
/<code>

代碼窗口如下:

Excel | VBA——合併工作簿與合併工作表

效果如下:

Excel | VBA——合併工作簿與合併工作表

合併工作表

在VBA窗口中輸入以下代碼(代碼橫屏觀看效果更好):

<code>Sub 合併工作表()
Application.ScreenUpdating = False   '關閉屏幕更新,避免合併時屏幕閃爍
Dim sht As Worksheet                 '定義工作表變量
Dim irow%, icol%                     '定義行列變量
Sheet1.UsedRange.ClearContents       '清除sheet1現有數據
For Each sht In Worksheets
    If sht.Name <> Sheet1.Name Then
        With sht
            irow = .Cells(.Rows.Count, 1).End(xlUp).Row                  '當前工作表數據行數
            icol = .Cells(1, .Columns.Count).End(xlToLeft).Column        '當前工作表數據列數
            If Sheet1.Range("a1") = "" Then
                .Range("a1").Resize(irow, icol).Copy Sheet1.Range("a1")  '當前工作表第一行復制到彙總工作表
            Else
                .Range("a2").Resize(irow - 1, icol).Copy Sheet1.Range("a" & Sheet1.Cells(Sheet1.Rows.Count, 1).End(xlUp).Row + 1)  '當前工作表除第一行以外的數據複製到彙總工作表
            End If
        End With
    End If
Next
Application.ScreenUpdating = True     '打開屏幕更新
End Sub/<code>

如下圖:

Excel | VBA——合併工作簿與合併工作表

效果如下:

Excel | VBA——合併工作簿與合併工作表

不要怕VBA,你可以從模仿開始寫起的,寫多了,見識多了,你也會了。當然,如果有編輯的基礎的,學的快一些,如果沒有編輯基礎的朋友,那要先去了解變量、語句、算法、對象的概念了。

------------------------------------------

--------------------------------------------


分享到:


相關文章: