亞寵展、全球寵物產業風向標——亞洲寵物展覽會深度解析
543
2025-03-31
excel圖表是怎么合并多個工作簿中的數據
我們使用代碼快速合并超過5 個Excel工作簿文件,然而,如果要合并的工作簿中工作表的名稱不相同,但位于每個工作簿的第1個工作表;并且,要在合并后的工作表的第1列中輸入相對應的工作簿文件名,以便知道合并后的數據來自哪個工作簿文件。
同樣,可以使用VBA代碼快速解決。多的話不說,先上代碼:
Sub Combine()
Dim fn, e
Dim ws As Worksheet
Dim flg As Boolean
Dim LastR As Range
Dim wsName As String
‘打開選擇文件對話框
fn = Application.GetOpenFilename _
(“Excel(*.xls*),*.xls*”,MultiSelect:=True)
‘如果沒有選取文件,則退出
If Not IsArray(fn) Then Exit Sub
‘在當前工作簿中添加新工作表
Set ws = ActiveWorkbook.Sheets.Add
‘將新添加的工作表命名為Combined
ws.Name = “Combined”
‘將新添加的工作表賦值給變量ws
Set ws =ActiveWorkbook.Sheets(“Combined”)
‘關閉屏幕刷新
Application.ScreenUpdating = False
‘清除工作表中的數據
ws.Cells.Clear
‘遍歷選取的工作簿文件
For Each e In fn
‘打開要從中獲取數據的文件
With Workbooks.Open(e)
‘選取文件中的第1個工作表
With .Sheets(1)
‘獲取工作表名并賦給變量
wsName = .Name
‘如果變量flag值為False則執行條件語句
If Not flg Then
‘將打開的文件的第1個工作表中的第1行數據
‘復制到開頭新添加的Combined工作表第1行
.Rows(1).Copy ws.Cells(1)
‘在Combined工作表中的開頭插入一列
ws.Columns(1).Insert
‘在插入的列的首行輸入”Sheetname”
ws.Cells(1).Value =”Sheet name”
‘設置變量flag值為True
flg = True
End If
‘獲取新添加的Combined工作表第2列
‘最后一個數據單元格之后的空單元格
‘注意End屬性后括號中的2表示最后單元格之后的單元格
‘若括號中的數字為1則表示最后數據單元格
Set LastR =ws.Cells(Rows.Count, 2).End(xlUp)(2)
‘打開的工作簿第1個工作表中當前數據區域
With.Range(“A1”).CurrentRegion
‘除去標題行后的數據區域
With .Resize(.Rows.Count -1).Offset(1)
‘復制到Combined工作表中
.Copy LastR
‘偏移到第1列并將區域擴展到與相鄰列已使用數據區域
‘相同的行數.注意LastR(, )的用法
‘GetBasename方法獲取文件路徑的最后部分
‘即工作簿文件名,不包含擴展名
LastR(, ).Resize(.Rows.Count).Value = _
CreateObject(“Scripting.FileSystemObject”).GetBasename(e)
End With
End With
End With
‘關閉要從中獲取數據的工作簿文件
.Close False
End With
Next
‘自動調整列寬
ws.Range(“A1”).CurrentRegion.Columns.AutoFit
‘打開屏幕刷新
Application.ScreenUpdating = True
Set ws = Nothing
End Sub
代碼遍歷所選擇的每個工作簿文件,將數據依次添加到新增加的工作表中,同時在工作表首列添加工作簿文件名。我對每行代碼都進行了詳細的注釋,可以參照來理解代碼。
有幾句代碼需要特別說明:
1.代碼:
ws.Cells(Rows.Count, 2).End(xlUp)(2)
注意到最后的括號和放置在其中的數字2,這表明在工作表第2列中最后一個數據單元格之后的空單元格。如果將2修改為1,則表明是最后一個數據單元格。
2.代碼:
LastR(, )
表明LastR代表的單元格左側的相鄰單元格。
3.代碼:
CreateObject(“Scripting.FileSystemObject”).GetBasename(e)
中的GetBasename方法返回一個字符串,包含文件路徑的最后部分,不包含擴展名。例如,若文件路徑為“C:\ Excel\excelvba.xlsm”,則返回“excelvba”。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。