Danh mục : CÔNG NGHỆ

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à công việc này làm mất rất nhiều thời gian để 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á tì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.

Đọc thêm:

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

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 Developer để mở cửa sổ giao diện Visual Basic.

 

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)

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


Tags #kien thuc

Ý kiến của bạn