Cách nối file Excel, ghép nhiều file Excel, gộp nhiều Sheet thành 1 file

Là một thủ quỹ, kế toán hay là một nhân viên văn phòng thì việc tổng kết, thống kê các báo cáo của các ban bệ để đưa ra mức quyết toán phù hợp trong từng tháng, từng quý là một việc làm thường xuyên.

Và rõ ràng là công việc này làm mất rất nhiều thời gian của bạn để có thể tổng hợp lại thành một File tổng kết cụ thể đúng không ạ?

Vâng, nếu như các bạn làm theo cách thủ công thì quá trình nhập liệu sẽ rất lâu, và đôi khi sơ ý có thể gây sai sót dữ liệu, ảnh hưởng nghiêm trọng tới các thành viên trong cùng công ty hoặc cơ quan mà bạn làm việc.

Chính vì thế trong bài viết ngày hôm nay, mình sẽ chia sẻ với các bạn cách tổng hợp, gộp nhiều file Excel thành một file duy nhất. Qua đó các bạn có thể ứng dụng các hàm để thống kê thành quả công việc, và quyết toán thu, chi của cơ quan mình trong một khoảng thời gian bất kỳ.

Do có nhiều phiên bản Excel khác nhau và giao diện của phiên bản mới so với phiên bản cũ có hơi khác một chút nên mình sẽ chia bài viết ra làm 2 trường hợp nhé. Trường hợp đầu tiên là bạn sử dụng phiên bản Excel 2007 trở lên.

I. Nối nhiều file Excel thành một file duy nhất (2007… 2021..)

Có nhiều code để chúng ta có thể làm việc này một cách dễ dàng, ở trong bài viết này mình sẽ trình bày với các bạn 3 cách để làm việc này một cách đơn giản nhất.

Ví dụ mình có hai danh sách File Excel như hình bên dưới, bây giờ mình cần ghép thành một file Excel duy nhất để việc tính toán thống kê được nhanh chóng và chính xác hơn.

Danh sách 1: Địa chi Đông Sơn, Hàm Rồng:

noi-nhieu-file-excel-thanh-mot (13)

Danh sách 2: Địa chỉ Đội 9, Thiệu Dương:

noi-nhieu-file-excel-thanh-mot (14)

Cách #1: Sử dụng Code VBA để ghép nhiều file Excel 

+ Bước 1: Bạn bật ứng dụng Excel của mình lên rồi nhấn tổ hợp phím Alt + F11 để bât cửa sổ VBA lên.

Đối với Excel 2007: Bạn nhấn vào icon biểu tượng Excel Button (ở góc trên cùng bên trái) của file Excel => chọn Excel Options => Một cửa sổ xuất hiện, bạn chọn tab Popular => tích chọn Show Deverloper tab in the Ribbon => chọn OK.

Tiếp theo sử dụng tổ hợp phím tắt Alt + F11 hoặc nhấn vào tab Developer để mở cửa sổ giao diện Visual Basic.

Đối với Excel 2013 trở lên thì bạn xem bài hướng dẫn này để biết cách thêm tab Developer vào thanh Ribbon nhé !

noi-nhieu-file-excel-thanh-mot (1)

+ Bước 2: Trong trình VBA bạn click chọn Insert => chọn Module để bật cửa sổ Code và Copy phần code mình để bên dưới và dán vào nhé.

noi-nhieu-file-excel-thanh-mot (2)

Code Gộp File Excel:

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: Ở phần này bạn đặt tên File code là GopFileExcel như hình.

noi-nhieu-file-excel-thanh-mot (3)

+ Bước 4: Sau khi chuyển sang Excel bạn chọn View và click vào Macros => View Macros để bật chế độ ghép File tự động cho Excel.

noi-nhieu-file-excel-thanh-mot (6)

+ Bước 5: Trong cửa sổ Macro, bạn click chọn GopFileExcel rồi nhấn lệnh Run để chọn File.

noi-nhieu-file-excel-thanh-mot (7)

+ Bước 6: Tìm các File Excel cần gộp => chọn tất cả và nhấn Open để gộp các File Excel vào File Tổng hợp.

noi-nhieu-file-excel-thanh-mot (8)

Và đậy là kết quả qúa trình gộp nhiều File Excel thành một File duy nhất. Lúc này bạn có thể dùng các hàm để tính toàn các bước tiếp theo cho công việc của mình rồi nhé.

noi-nhieu-file-excel-thanh-mot (12)

Cách #2: Sử dụng một đoạn code VBA khác

+ Bước 1: Bạn hãy copy hết các file Excel cần nối vào một thư mục. Bạn nên đặt tên thư mục không có dấu và các ký tự đặc biệt nhé.

cach-ghep-noi-file-excel

+ Bước 2: Chạy một file Excel mà bạn muốn ghép các file khác vào. Ví dụ mình sẽ chạy File Excel 1.

+ Bước 3: Bạn mở cửa sổ cửa sổ Microsoft Visual Basic for applications lên bằng cách nhấn tổ hợp phím ALT + F11 (bạn làm theo bước 2 như hướng dẫn bên trên).

Sau đó sử dụng đoạn code sau:

Sub GetSheets()
Path = "C:\Users\karra\Desktop\Bai Tap"
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 Ý:
Ở đoạn code bên trên thì bạn cần chú ý đến đoạn bôi đậm, đó là đường dẫn đến thư mục chứa các file mà bạn cần ghép nhé <xem cách lấy đường dẫn của 1 file bất kỳ>.

+ Bước 4: Làm tương tự từ Bước 3 mà mình đã hướng dẫn ở Cách 1.

Cách #3: Ghép, nối file Excel thủ công (Move or copy)

Ngoài cách sử dụng code VBA ra thì còn một cách làm thủ công nữa đó là sử dụng tính năng Move or Copy. Tuy có hơi lâu một chút nhưng nếu bạn không sử dụng được code thì đây cũng là một cách hay cho bạn.

+ Bước 1: Bạn mở tất cả các file Excel cần ghép nối vào 1 file ra.

+ Bước 2: Với cách này thì bạn có thể copy từ Sheet sang Sheet. Tuy nhiên trong bài viết này mình sẽ hướng dẫn bạn copy toàn bộ các Sheet từ file Excel này để nối vào 1 file Excel khác.

Bạn chọn có chọn nhiều Sheet cùng lúc bằng cách nhấn giữ phím Ctrl hoặc là phím Shift. Sau đó nhấn phải chuột vào 1 Sheet bất kỳ => chọn Move or Copy...

noi-file-excel-bang-move-or-copy-1

+ Bước 3: Trong cửa sổ Move or Copy bạn chọn bảng tính chính từ mục Move selected sheets to book (có nghĩa là tất cả các file Excel khác sẽ được copy vào bảng tính chính này).

Sau đó xác nhận vị trí của các trang tính được hợp nhất như hình dưới đây :

noi-file-excel-bang-move-or-copy-2

+ Bước 4: Sau đó nhấn OK. Lúc này thì các trang tính được chọn sẽ được di chuyển đến bảng tính chính.

noi-file-excel-bang-move-or-copy-3

+ Bước 5: Bạn lặp lại các bước từ 2 đến 4 để tiếp tục di chuyển các Sheet còn lại nhé.

Cách #4. Sử dụng code gộp nhiều Sheet thành 1 File

+ Bước 1Bước 2 giống với hướng dẫn ở Cách #1 bên trên.

+ Bước 3: Sau đó bạn giữ nguyên Code đó và làm tương tự để thêm Code gộp nhiều Sheet thành một file. Bạn chọn Insert => chọn Module và sao chép toàn bộ mã Code ở dưới vào ô trống.

noi-nhieu-file-excel-thanh-mot (4)

Code Gộp Sheet thành một File tổng:

Sub MergeSheets()
Const NHR = 1
Dim MWS As Worksheet
Dim AWS As Worksheet
Dim FAR As Long
Dim LR As Long
Set AWS = ActiveSheet
For Each MWS In ActiveWindow.SelectedSheets
If Not MWS Is AWS Then
FAR = AWS.UsedRange.Cells(AWS.UsedRange.Cells.Count).Row + 1
LR = MWS.UsedRange.Cells(MWS.UsedRange.Cells.Count).Row
MWS.Range(MWS.Rows(NHR + 1), MWS.Rows(LR)).Copy AWS.Rows(FAR)
End If
Next MWS
End Sub

+ Bước 4: Bạn chọn đặt tên File là MergeSheets như hình rồi click sang phần File Excel Tổng hợp bạn đầu của mình. Lưu ý là bạn đừng tắt code VBA nhé.

noi-nhieu-file-excel-thanh-mot (5)

+ Bước 5: Lúc này bạn mới tạo được một File Excel gồm nhiều Sheet, bao gồm nội dung ở các File bạn lựa chọn mà thôi. Để gộp các Sheet này vào một Sheet trong File thì bạn chọn File Tổng hợp trước rồi giữ Ctrl rồi click vào các Sheet cần (ghép) lại.

noi-nhieu-file-excel-thanh-mot (9)

+ Bước 6: Bạn chọn Tab Insert , và click tiếp vào Macros => chọn View Macros để khởi động chế độ tự động trên Excel.

noi-nhieu-file-excel-thanh-mot (10)

+ Bước 7: Tại cửa sổ Macro bạn chọn MergeSheets => sau đó click Run để hợp nhất các Sheet lại vào Sheet Tổng hợp.

noi-nhieu-file-excel-thanh-mot (11)

+ Bước 8: Kiểm tra kết quả nào 😛

II. Ghép nối file Excel (Áp dụng cho Excel 2003)

Đối với Excel 2003 và Excel thì giao diện có hơi khác một chút. Các bạn có thể thao tác như sau để truy cập vào Macro để sử dụng Code. Code thì chúng ta vẫn sử dụng code bên trên nhé.

Mặc dù giờ chắc cũng ít người dùng OFFICE 2003 nhưng mình vẫn viết cho đầy đủ, biết đâu vẫn có bạn dùng 🙂

Thực hiện:

Bạn vào menu Tools => chọn Macro => sử dụng code bên trên để thực hiện nối File hoặc gộp Sheet.

Bạn có thể làm theo bài hướng dẫn này nhé.  (Trong phần cách Gộp ô trong Excel không bị mất dữ liệu)

III. Lời kết

Okay, như vậy là mình vừa hướng dẫn cho các bạn cách thức nối, gộp nhiều file Excel thành một file duy nhất. Hoặc gộp nhiều Sheet trong Excel thành một Sheet duy nhất rồi nhé.

Mình nghĩ thủ thuật này sẽ cực kỳ tiện lợi trong quá trình thống kê các chương mục, danh sách báo cáo của các bạn đó.

Đến đây bài hướng dẫn gộp nhiều File Excel thành một File duy nhất của mình cũng xin được kết thúc rồi. Hy vọng thủ thuật này sẽ hữu ích trong công việc của mọi người.

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

Đọc thêm:

Bài viết đạt: 4.2/5 sao - (Có 34 lượt đánh giá)
Note: Bài viết này hữu ích với bạn chứ? Đừng quên đánh giá bài viết, like và chia sẻ cho bạn bè và người thân của bạn nhé !

Administrator: Kiên Nguyễn

Có một câu nói của người Nhật mà mình rất thích đó là " Người khác làm được thì mình cũng làm được ". Chính vì thế mà hãy theo đuổi đam mê, thành công sẽ theo đuổi bạn ! Nếu như bạn đang gặp khó khăn và cần sự trợ giúp thì hãy comment phía bên dưới mỗi bài viết để nhận được sự hỗ trợ từ cộng đồng Blog Chia Sẻ Kiến Thức nhé.

21 comments

  1. KIỀU DUY NHẬT MINH

    Chào anh! Em vẫn chưa tải được win, nếu dùng file win được tích hợp trong usb boot đa năng để cài win được ko. Em muốn học tự cài win mà chưa được. Thank you

  2. (FileFilter:=”Microsoft Excel Files (*.xlsx), *.xlsx”, MultiSelect:=True, Title:=”Files to Merge”)
    If TypeName(FilesToOpen) = “Boolean” Then
    MsgBox “No Files were selected”
    Bạn ơi sao mình thử CODE của bạn lại bị báo lỗi bôi đỏ dòng này nhỉ xem giúp mình với

    • Bạn sửa lại các dấu nháy kép nhé! Nên xó dấu nháy kép và gõ lại nó.

      • em đã thay đổi các dấu nháy kép nhưng code chạy ra nhiều sheet chứ không vào 1 sheet tổng hợp như của anh làm, cảm ơn anh

    • Với đoạn mã sau sẽ copy các sheet1 từ các nhiều file khác nhau vào sheet1 của file tonghop

      Sub GopFileExcel()
      Dim FilesToOpen
      Dim x As Integer
      Dim t1, t2, n 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("Sheet1").Range("A1").Select
      t1 = Sheets("sheet1").Range("A65536").End(xlUp).Row
      If t1 < 2 Then
      Workbooks.Close
      Else
      Range("A2:C" & t1).Select
      Selection.Copy
      Workbooks.Open "TONGHOP.xlsm"
      t2 = Sheets("sheet1").Range("A65536").End(xlUp).Row
      Range("A" & t2 + 1).Select
      ActiveSheet.Paste
      End If
      x = x + 1
      Wend
      ExitHandler:
      Application.ScreenUpdating = True
      Exit Sub
      ErrHandler:
      MsgBox Err.Description
      Resume ExitHandler
      End Sub

      • mình làm theo hướng dẫn nhưng nó cứ báo lỗi này ” Can’t execute code in break mode”

    • MÌNH LÀM ĐƯỢC RỒI NHƯNG LÚC CHỌN 2 FILE ĐỂ GỘP SAO MÌNH CHỌN Ổ ĐĨA MÀ MỞ RA KO CÓ FILE NÀO HẾT Á . GIÚP MÌNH VỚI

  3. Bạn ơi, code để delete những sheet trung gian không cần thiết sau khi đã gọp thì làm sao?

  4. mình cũng bị tương tự, khi mở file để gộp ko xuất hiện file nào

  5. Xuân Nguyên

    Cho mình hỏi. Mình làm theo hướng dẫn gộp nhiều sheet thành 1 sheet tổng hợp. Chạy được kết quả nhưng sheet tổng chỉ bao gồm 1 sheet

  6. Hi chào anh
    Em đang muốn làm 1 sheet Excel tổng hợp từ nhiều sheet khác, và mỗi khi nhập data mới vào nhiều sheet con thì sheet data tổng hợp sẽ tự động update dữ liệu mới luôn.
    Anh có thể chia sẻ đoạn code để làm được không do em không biết viết code.
    Cảm ơn anh nhiều ạ.

  7. Hiển thị thông báo này làm sao nhỉ: ” Can’t execute code in break mode”

  8. toàn đỏ lừ, không chạy được bạn ơi

  9. Mình đã thành công, cảm ơn bạn đã chia sẻ

  10. Cảm ơn bạn đã chia sẽ.

  11. CHỈ CHỌN ĐƯỢC 1 FILE THÔI

  12. Nguyển TRung Hiên

    cảm ơn bạn nhiều nhé

  13. Hay! Mình đã làm theo và nó hoạt động tốt


Một vài lưu ý trước khi comment :

Thư điện tử của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *
Tất cả các comment của các bạn sẽ được giải đáp trong vòng 48h !
Không được sử dụng từ khóa trong ô 'Name', bạn hãy dùng tên thật hoặc Nickname của bạn !
Không dẫn link sang trang web/blog khác. Xem quy định comment tại đây. Thank All!

Leave a Reply

Your email address will not be published. Required fields are marked *

Shop