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:
.jpg)
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 SubLư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 SubVớ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
.jpg)
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:
.jpg)
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.
.jpg)
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!