Chắc hẳn người sử dụng Excel không ít lần loay hoay không biết làm thể nào để tổng hợp nhiều file Excel riêng lẻ khác nhau thành một file hoàn chỉnh gồm nhiều trang tính. Việc thao tác dùng các hàm như VLOOKUP hay tham chiếu tới các bảng tính Excel khác dường như gây nhiều bất tiện khi người dùng phải mở nhiều file đồng thời. Bài viết này, Gitiho sẽ hướng dẫn các bạn cách gộp nhiều file Excel thành một file duy nhất.
Xem thêm: Tuyệt đỉnh Excel - Khóa học Excel Online giúp bạn Trở thành bậc thầy Excel trong 16 giờ
Đầu tiên, hãy cho tất cả các file cần tổng hợp vào trong một folder như sau:
Tiếp theo,
Mở tệp Excel mới mà bạn muốn tổng hợp cả 4 file trên
Các file book1, book2, book3, book4 bao gồm nhiều sheets khác nhau.
Bạn cần thực hiện thao tác sau đây:
Vào Developer > Visual Basic, cửa sổ Microsoft Visual Basic for applications mở ra. Nhấp vào Insert > Module, sao chép đoạn mã dưới đây vào Module:
Sub GetSheets()
Path = "C:\Users\dt\Desktop\dt kte\"
Filename = Dir(Path & "*.xls")
Do While Filename <> ""
Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
For Each Sheet In ActiveWorkbook.Sheets
Sheet.Copy After:=ThisWorkbook.Sheets(1)
Next Sheet
Workbooks(Filename).Close
Filename = Dir()
Loop
End Sub
Lưu ý: Trong đoạn Code trên, sau phần " Path = ", trong dấu ngoặc kép (") là thư mục chứa 4 file excel trong ví dụ chúng tôi đã cho, bạn có thể thay đổi bằng đường dẫn thư mục chứa các file bạn đang lưu. Đừng quên thêm dấu "\" sau đường dẫn để Excel có thể nhận định chúng trên cùng một folder.
Cuối cùng, nhấn Run hoặc phím F5 để chạy mã. Kết quả thu được là tất cả trang tính giờ đây sẽ nằm trên cùng một file (một bảng tính) Excel.
Nhược điểm của mã Code này là gộp tất cả các file bạn chọn trong thư mục thành một bảng tính duy nhất, nếu bạn chỉ muốn gộp một vài sheet cụ thể trong các file Excel sẵn có, thì cách thứ 2 sau đây mới dành cho bạn.
Thao tác tương tự như trên, bạn chỉ cần thay "mã Code trên" bằng mã Code mới sau:
Sub MergeExcelFiles() Dim fnameList, fnameCurFile As Variant Dim countFiles, countSheets As Integer Dim wksCurSheet As Worksheet Dim wbkCurBook, wbkSrcBook As Workbook fnameList = Application.GetOpenFilename(FileFilter:="Microsoft Excel Workbooks (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm", Title:="Choose Excel files to merge", MultiSelect:=True) If (vbBoolean <> VarType(fnameList)) Then If (UBound(fnameList) > 0) Then countFiles = 0 countSheets = 0 Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Set wbkCurBook = ActiveWorkbook For Each fnameCurFile In fnameList countFiles = countFiles + 1 Set wbkSrcBook = Workbooks.Open(Filename:=fnameCurFile) For Each wksCurSheet In wbkSrcBook.Sheets countSheets = countSheets + 1 wksCurSheet.Copy after:=wbkCurBook.Sheets(wbkCurBook.Sheets.Count) Next wbkSrcBook.Close SaveChanges:=False Next Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic MsgBox "Processed " & countFiles & " files" & vbCrLf & "Merged " & countSheets & " worksheets", Title:="Merge Excel files" End If Else MsgBox "No files selected", Title:="Merge Excel files" End If End Sub
Với những dân không chuyên trong Excel hay không sử dụng được Code phức tạp, thì bạn bắt buộc phải sử dụng tính năng More or Copy để sao chép các trang tính một cách nhanh hơn.
Bước 1: Mở tất cả các file chứa các sheets bạn muốn gộp.
Bước 2: Chọn tất cả các tên trang tính (ví dụ như Sheet 1, Sheet 2,...) trong bảng tính ở thanh tên. Bạn có thể chọn nhiều trang bằng cách nhấn giữ Ctrl hoặc Shift rồi Click chuột trái để chọn. Nhấp chuột phải vào tên một trang tính trong số trang tính đã chọn, chọn Move or Copy như hình dưới đây
Hộp thoại Move or Copy sẽ được hiện lên, tại dòng "Move selected sheets to book" bạn chọn tất cả các file Excel riêng lẻ (các bảng tính) mà bạn muốn gộp nhất. Tại phần "Before sheet" bạn chọn vị trí các sheet như hình dưới đây:
Cuối cùng, Click OK và kết quả thu được là một bảng tính Excel lớn bao gồm các trang tính bạn đã chọn.
Lưu ý: Lặp lại thao tác với các bảng tính (file Excel riêng lẻ khác) như book2.xlsx, book3.xlsx,... của chúng tôi hay các bảng tính của các bạn để gộp được thành một file Excel lớn duy nhất.
Qua bài viết trên, chúng ta thấy VBA là một công cụ hữu hiệu đối với người cần sử dụng Excel trong công việc hàng ngày. Không những thế, VBA còn chứa vô vàn tính năng hỗ trợ bạn không chỉ trong Excel mà còn trong Word, PowerPoint, Outlook,... giúp bạn trở thành dân chuyên trong lĩnh vực tin học văn phòng.
Tham khảo các bài viết, cũng như các khóa học VBA từ cơ bản đến nâng cao của Gitiho để làm chủ các kĩ năng trong Excel tối ưu hóa công việc của bạn:
Ebook thư viện code mẫu VBA
G-LEARNING
Nếu công việc của bạn liên quan nhiều đến quản lý, phân tích dữ liệu và làm báo cáo trên bảng tính thì giỏi Excel thôi chưa đủ. Nếu biết thêm về VBA sẽ giúp bạn tiết kiệm tối đa thời gian làm việc nhờ làm báo cáo tự động, phân tích và xử lý số liệu chính xác tuyệt đối, đặc biệt công cần lọ mọ sửa thủ công,…
Tất tần tật những kiến thức từ cơ bản đến nâng cao về cách sử dụng VBA trong Excel sẽ được đề cập trong khóa học VBAG01: Tuyệt đỉnh VBA - Tự động hóa Excel với lập trình VBA tại Gitiho
Hãy nhấn vào Học thử hoặc Đăng ký ngay!