Hướng dẫn gộp nhiều file Excel thành 1 File

Bài viết dưới đây hướng dẫn chi tiết cách gộp nhiều file Excel thành 1 file duy nhất.

Ví dụ có 2 file dữ liệu sau:

File 1 tên DS_1 có nội dung:

DS_1

File 2 tên DS_2 có nội dung:

DS_2

Muốn tổng hợp dữ liệu từ 2 file trên thành 1 file dữ liệu duy nhất đặt tên Book1 (các bản ghi nằm cùng trên 1 Sheet) các bạn làm như sau:

Bước 1: Tạo 1 file Excel mới tên là Book1 -> nhấn tổ hợp phím Alt + F11 -> cửa sổ xuất hiện -> Chọn thẻ Insert -> Module.

Module

Bước 2: Copy toàn bộ đoạn code sau vào Module 1.

Copy toàn bộ đoạn code vào Module 1

Sub GopFileExcel()
    Dim FilesToOpen
    Dim x As Integer

    On Error GoTo ErrHandler
    Application.ScreenUpdating = False

    FilesToOpen = Application.GetOpenFilename _
      (FileFilter:="Microsoft Excel Files (*.xlsx), *.xlsx", MultiSelect:=True, Title:="Files to Merge")

    If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox "No Files were selected"
        GoTo ExitHandler
    End If

    x = 1
    While x <= UBound(FilesToOpen)
        Workbooks.Open Filename:=FilesToOpen(x)
        Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
        x = x + 1
    Wend

ExitHandler:
    Application.ScreenUpdating = True
    Exit Sub

ErrHandler:
    MsgBox Err.Description
    Resume ExitHandler
End Sub

Bước 3: Save Module 1 đặt tên GopFileExcel (). Vì Module có chứa Macro nên khi lưu có cảnh báo bạn kích chọn OK nhé.

OK

Bước 4: Tạo thêm 1 Module kích chọn Insert -> Module.

Bước 5: Copy toàn bộ đoạn code sau vào module 2 -> lưu lại đặt tên GopCacSheet ().

Copy toàn bộ đoạn code vào module 2

Sub GopCacSheet()
Dim Sh As Worksheet
Application.ScreenUpdating = False
[A6].CurrentRegion.Offset(1, 1).ClearContents
For Each Sh In Worksheets
If Sh.Name <> "Gop_File" Then
With [B65500].End(xlUp).Offset(1)
    [A6].CurrentRegion.Offset(1, 1).Copy Destination:=.Offset(0)
    End With
End If
Next Sh
Application.ScreenUpdating = True
Columns("E:E").Hidden = False:       Randomize
[A5].Resize(, 6).Interior.ColorIndex = 34 + 9 * Rnd() \ 1
End Sub

Bước 6: Quay trở lại File Excel vừa tạo -> Vào thẻ View -> View Marco.

View Marco

Bước 7: Hộp thoại macro xuất hiện -> chọn module 1 (tên GopFileExcel ()) -> Run.

Run

Bước 8: Hộp thoại Browse xuất hiện chọn đường dẫn tới các file dữ liệu cần gộp (ở đây file DS_1 và DS_2) -> Open.

Open

Sau khi chọn Open dữ liệu từ 2 file tương ứng ghi vào sheet 2 và sheet 3 trong file Book1. Việc cuối cùng gộp các Sheet thành 1 Sheet duy nhất.

Bước 9: Vào thẻ View -> View Macro -> GopCacSheet () -> Run.

Run 2

Tất cả dữ liệu ở 2 Sheet gộp vào Sheet 1. Lưu ý về số thứ tự chưa đúng các bạn cần nhập lại và căn chỉnh kích thước các cột. Sau khi chỉnh sửa kết quả:

Kết quả

Chú ý:

- Sheet gộp sheet2, sheet 3 là sheet 1.

- Áp dụng với số lượng các file khác nhau lưu ý số file càng lớn tốc độ xử lý càng chậm.

- Trong quá trình gộp file dữ liệu không nên sử dụng bất kì hàm dữ liệu nào sẽ gây ra lỗi (vì địa chỉ thay đổi). Nên dùng dữ liệu nhập đơn thuần.

Chúc các bạn thành công!

Bình luận (6)

  1. avatar
    Hoàng Thị Hoài Nhion April 02, 2017

    Xin chào! Cho mình hỏi: Tại sao thực hiện đến bước 8, hộp thoại Browse lại không xuất hiện các file dữ liệu cần gộp (ở đây ví dụ file DS_1 và DS_2) mà chỉ xuất hiện file Book 1 như ở hướng dẫn. Nhờ chương trình chỉ giúp là mình đã thực hiện sai ở thao tác nào nhé. Cảm ơn.

  2. avatar
    Bích Hợpon July 05, 2017

    Hi cả nhà, Em sử dụng code và làm như bài viết tuy nhiên không run được (không cho run) Em đã xóa file và làm lại từ đầu nhiều lần nhưng vẫn không được. Khi qua máy tính của người khác thì làm được, cả nhà bắt bệnh giúp em ah Mong phản hồi sớm của cả nhà Em cám ơn nhiều.

    • avatar
      Đặng Văn Dậuon December 15, 2017

      Xin chào! Cho mình hỏi: Tại sao thực hiện đến bước 8, hộp thoại Browse lại không xuất hiện các file dữ liệu cần gộp (ở đây ví dụ file DS_1 và DS_2) mà chỉ xuất hiện file Book 1 như ở hướng dẫn. Nhờ chương trình chỉ giúp là mình đã thực hiện sai ở thao tác nào nhé. Cảm ơn.

  3. avatar
    Nguyễn Đức Nghiênon January 22, 2018

    Chào các bạn! Reply có thể quá muộn nhưng hi vọng sẽ hữu ích cho các bạn sau này cần. các bạn lỗi ở bước 8 là do sai cấu trúc tên file excel. Nó nôm na là sai tên. Trong code để cấu trúc là *.xlsx nhưng file của các bạn lại là .xls nên ko thấy là phải. Chỉ cần sửa đoạn này: xóa 2 chữ x sau cùng của *.xlsx FilesToOpen = Application.GetOpenFilename _ (FileFilter:="Microsoft Excel Files (*.xls), *.xls", MultiSelect:=True, Title:="Files to Merge")

    • avatar
      Nguyễn Phúcon February 06, 2018

      Sao mình làm đến bước gộp sheet thì không hiện gì, chỉ thấy 1 dòng màu hiện ra ở Sheet 1???

      • avatar
        Trâm Trầnon March 07, 2018

        Mình cũng bị giống bạn Nguyễn Phúc gộp file được nhưng gộp sheet không được chỉ hiện hàng đầu tiên hoặc hàng màu ( mình để trỏ chuột ở A1 sheet 1 trống khi chạy gộp sheet)

Viết bình luận