Thanh Hằng
Thanh Hằng
Thảo luận 0 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 2375 lượt xem

Cách gộp nhiều file Excel thành một file tổng hợp ( kèm CODE)

Dec 29 2020

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.

Tuyệt đỉnh Excel - Trở thành bậc thầy Excel trong 16 giờ

Sử dụng CODE VBA

Đầ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.

Sử dụng mã CODE VBA khác

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

Sử dụng "Move or Copy"

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 về VBA cũng như tham gia khóa học 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.

Tuyệt đỉnh VBA - Viết code trong tầm tay

Cùng tham gia cộng đồng hỏi đáp về chủ đề Tin học văn phòng

Thảo luận 0 câu trả lời
Lượt xem 2375 lượt xem
Vỗ tay vỗ tay

0 Bình luận

@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội