合并工作簿與合并工作表,是Excel數(shù)據(jù)處理永恒的話題。原來(lái)韓老師講過(guò)用SQL語(yǔ)句,還講過(guò)Excel|零基礎(chǔ)也會(huì)合并多工作表,只需鼠標(biāo)按序點(diǎn)下去,今天給大家兩組代碼,每次需要合并工作簿與或是工作表時(shí),復(fù)制過(guò)來(lái)使用就好了。
代碼如下(代碼橫屏觀看效果更好):
Sub 合并工作薄()Dim FileOpen '定義打開(kāi)文件變量Dim i As Integer '定義打開(kāi)文件個(gè)數(shù)變量Application.ScreenUpdating = False '關(guān)閉屏幕更新,避免合并時(shí)屏幕閃爍FileOpen = Application.GetOpenFilename(FileFilter:='Microsoft Excel文件(.xlsx),.xlsx', MultiSelect:=True) '打開(kāi)文件類(lèi)型為.xlsx,并可以打開(kāi)多個(gè)i = 1Do While i <= UBound(FileOpen) Workbooks.Open Filename:=FileOpen(i)Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) '將需要合并的工作薄中工作表合并到最后一個(gè)工作表 i = i + 1LoopApplication.ScreenUpdating = True '打開(kāi)屏幕更新MsgBox '已完成合并' '合并完成并提示End Sub
代碼窗口如下:
效果如下:
在VBA窗口中輸入以下代碼(代碼橫屏觀看效果更好):
Sub 合并工作表()Application.ScreenUpdating = False '關(guān)閉屏幕更新,避免合并時(shí)屏幕閃爍Dim sht As Worksheet '定義工作表變量Dim irow%, icol% '定義行列變量Sheet1.UsedRange.ClearContents '清除sheet1現(xiàn)有數(shù)據(jù)For Each sht In Worksheets If sht.Name <> Sheet1.Name Then With sht irow = .Cells(.Rows.Count, 1).End(xlUp).Row '當(dāng)前工作表數(shù)據(jù)行數(shù) icol = .Cells(1, .Columns.Count).End(xlToLeft).Column '當(dāng)前工作表數(shù)據(jù)列數(shù) If Sheet1.Range('a1') = '' Then .Range('a1').Resize(irow, icol).Copy Sheet1.Range('a1') '當(dāng)前工作表第一行復(fù)制到匯總工作表 Else .Range('a2').Resize(irow - 1, icol).Copy Sheet1.Range('a' & Sheet1.Cells(Sheet1.Rows.Count, 1).End(xlUp).Row + 1) '當(dāng)前工作表除第一行以外的數(shù)據(jù)復(fù)制到匯總工作表 End If End With End IfNextApplication.ScreenUpdating = True '打開(kāi)屏幕更新End Sub
如下圖:
效果如下:
不要怕VBA,你可以從模仿開(kāi)始寫(xiě)起的,寫(xiě)多了,見(jiàn)識(shí)多了,你也會(huì)了。當(dāng)然,如果有編輯的基礎(chǔ)的,學(xué)的快一些,如果沒(méi)有編輯基礎(chǔ)的朋友,那要先去了解變量、語(yǔ)句、算法、對(duì)象的概念了。
------------------------------------------
--------------------------------------------
聯(lián)系客服