Gộp Nhiều Sheet Trong 1 File Excel Vào 1 Sheet

Trong môi trường làm việc hiện đại, Excel vẫn là công cụ quan trọng nhất để lưu trữ, phân tích và trình bày dữ liệu. Khi dữ liệu được thu thập từ nhiều nguồn, chúng ta thường thấy một file Excel bao gồm nhiều sheet chứa các bảng dữ liệu tương tự nhau. Việc gộp tất cả các sheet này thành một sheet duy nhất giúp cho việc tổng hợp, phân tích và báo cáo trở nên nhanh chóng, chính xác hơn. Bài viết này sẽ hướng dẫn chi tiết các phương pháp gộp sheet trong Excel, từ cách thủ công, sử dụng công cụ Power Query, viết macro VBA, đến cách dùng Python. Bạn sẽ tìm thấy những mẹo, lưu ý và ví dụ thực tế để áp dụng ngay vào công việc của mình.

1. Lý do cần gộp sheet

  • Tăng tính nhất quán: Khi dữ liệu được chia thành nhiều sheet, việc kiểm tra tính nhất quán, tìm kiếm lỗi trở nên khó khăn.
  • Tiết kiệm thời gian: Thay vì phải lọc, copy‑paste từng sheet, bạn có thể gộp nhanh chóng và tiếp tục phân tích.
  • Chuẩn bị báo cáo: Nhiều công cụ phân tích doanh thu, KPI yêu cầu dữ liệu ở dạng bảng duy nhất.
  • Tích hợp dữ liệu: Khi merge sheet, bạn có thể dễ dàng thực hiện các phép tính khối lượng (SUM, AVERAGE) trên toàn bộ dữ liệu.

2. Cách thủ công (Copy‑Paste)

Đối với file nhỏ với số lượng sheet ít, thao tác thủ công vẫn là lựa chọn đơn giản nhất.

2.1 Các bước thực hiện

  1. Mở file Excel chứa các sheet cần gộp.
  2. Tạo một sheet mới, đặt tên “Merge” (hoặc tên tùy ý).
  3. Chọn sheet đầu tiên, bấm Ctrl + A để chọn toàn bộ dữ liệu, sau đó Ctrl + C để copy.
  4. Chuyển đến sheet “Merge”, chọn ô A1, bấm Ctrl + V để dán.
  5. Tiếp tục lặp lại bước 3-4 cho các sheet còn lại, nhưng khi dán lần hai trở đi, hãy dán dữ liệu vào ô ngay dưới dòng dữ liệu cuối cùng (sử dụng Ctrl + V và chọn “Paste Special” → “Values” để tránh dán công thức).
  6. Cập nhật cột tiêu đề nếu cần (nếu các sheet có tiêu đề khác nhau thì cần chỉnh sửa cho đồng nhất).

2.2 Nhược điểm

  • Quá trình mất thời gian: Đặc biệt khi có hàng trăm sheet.
  • Rủi ro lỗi: Nhầm lẫn khi dán, thiếu dữ liệu.
  • Không tự động cập nhật: Khi sheet thay đổi, dữ liệu merge không tự động cập nhật.

3. Sử dụng Power Query (Get & Transform)

Power Query là công cụ mạnh mẽ để truy vấn, biến đổi dữ liệu trong Excel. Với Power Query, bạn có thể dễ dàng gộp nhiều sheet mà không cần viết mã.

3.1 Cài đặt Power Query (Excel 2026 trở đi)

  • Excel 2026+ đã tích hợp sẵn Power Query dưới tab “Data” → “Get & Transform Data”.
  • Nếu dùng Excel 2026/2026, bạn cần cài đặt add-in “Power Query” miễn phí từ Microsoft.

3.2 Các bước thực hiện

  1. Mở Power Query:
  2. Trong tab “Data”, chọn “Get Data” → “From Other Sources” → “Blank Query”.
  3. Mở “Advanced Editor” và nhập đoạn mã sau:

    m let Source = Excel.CurrentWorkbook(), #"Filtered Rows" = Table.SelectRows(Source, each Text.StartsWith(Name, "Sheet")), #"Removed Other Columns" = Table.RemoveColumns(#"Filtered Rows",{"Data"}), #"Expanded Data" = Table.ExpandTableColumn(#"Filtered Rows", "Data", {"Column1","Column2","Column3", ...}, {"Column1","Column2","Column3", ...}), #"Combined" = Table.Combine(#"Expanded Data") in #"Combined"

    Lưu ý: Thay “Column1724… ” bằng danh sách thực tế các cột trong sheet của bạn. Nếu có cột thiếu trong một sheet, Power Query sẽ tự động điền null.

  4. Chỉnh sửa cột tiêu đề:

  5. Nếu các sheet có tiêu đề khác nhau, bạn có thể chọn “Use first row as headers” trong Power Query.
  6. Hoặc chuyển dữ liệu vào sheet “Merge” và chỉnh sửa thủ công.

  7. Lưu kết quả:

  8. Trong Power Query, chọn “Close & Load” → “Close & Load To…” → “Table in New Worksheet” hoặc “Existing Worksheet”.
  9. Kết quả là một bảng duy nhất chứa dữ liệu từ tất cả sheet.

3.3 Ưu điểm

  • Tự động cập nhật: Khi dữ liệu trong sheet thay đổi, bạn chỉ cần click “Refresh”.
  • Khả năng xử lý dữ liệu lớn: Power Query có thể xử lý hàng triệu hàng mà Excel thường gặp lỗi.
  • Quản lý dữ liệu tốt: Bạn có thể thêm các bước biến đổi (lọc, sắp xếp, duplicate removal) ngay trong Power Query.

4. Viết Macro VBA để gộp sheet

Nếu bạn thường xuyên thực hiện thao tác này, viết một macro VBA sẽ giúp tự động hoá công việc, giảm thiểu thao tác thủ công.

4.1 Mã ví dụ

Sub MergeSheets() Dim ws As Worksheet Dim destWs As Worksheet Dim lastRow As Long Dim destLastRow As Long ' Tạo sheet đích On Error Resume Next Set destWs = ThisWorkbook.Worksheets("Merge") If destWs Is Nothing Then Set destWs = ThisWorkbook.Worksheets.Add destWs.Name = "Merge" End If On Error GoTo 0 destWs.Cells.Clear destLastRow = 1 ' Duyệt qua từng sheet For Each ws In ThisWorkbook.Worksheets If ws.Name <> destWs.Name Then ' Lấy hàng cuối cùng trong sheet nguồn lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' Copy dữ liệu ws.Range("A1", ws.Cells(lastRow, ws.Columns.Count).End(xlToLeft)).Copy _ Destination:=destWs.Cells(destLastRow, 1) ' Cập nhật hàng cuối cùng trong sheet đích destLastRow = destWs.Cells(destWs.Rows.Count, "A").End(xlUp).Row + 1 End If Next ws MsgBox "Merge completed!"
End Sub

Lưu ý: Mã trên giả định rằng tất cả sheet có cấu trúc cột giống nhau và không có cột trống giữa các vùng dữ liệu. Bạn có thể tinh chỉnh tùy theo yêu cầu.

Gộp Nhiều Sheet Trong 1 File Excel Vào 1 Sheet
Gộp Nhiều Sheet Trong 1 File Excel Vào 1 Sheet

4.2 Cách sử dụng

  1. Mở file Excel, nhấn Alt + F11 để mở Visual Basic Editor.
  2. Vào Insert → Module, dán mã vào.
  3. Nhấn F5 hoặc chạy macro từ cửa sổ “Macro” (Alt + F8).

4.3 Lợi ích

  • Tự động hóa: Thực hiện nhanh, không sai sót.
  • Tùy biến cao: Bạn có thể thêm tính năng lọc, xóa duplicate, chuyển đổi kiểu dữ liệu.
  • Dễ bảo trì: Chỉ cần chỉnh sửa mã một lần.

5. Sử dụng Python (pandas) để merge sheet

Khi dữ liệu quá lớn hoặc cần tích hợp với quy trình ETL, Python là lựa chọn tuyệt vời. Dưới đây là ví dụ thực thi với thư viện pandas.

5.1 Cài đặt môi trường

pip install pandas openpyxl

openpyxl là engine đọc/ghi file Excel.

5.2 Mã ví dụ

import pandas as pd
import os # Đường dẫn file Excel
file_path = r'C:\Data\myfile.xlsx' # Đọc tất cả sheet
xls = pd.ExcelFile(file_path)
sheet_names = xls.sheet_names # List lưu DataFrames
df_list = for sheet in sheet_names: df = pd.read_excel(xls, sheet_name=sheet) # Thêm cột 'SourceSheet' nếu muốn biết sheet nguồn df'SourceSheet' = sheet df_list.append(df) # Concatenate
merged_df = pd.concat(df_list, ignore_index=True) # Lưu kết quả vào sheet mới
with pd.ExcelWriter(file_path, engine='openpyxl', mode='a') as writer: merged_df.to_excel(writer, sheet_name='Merge', index=False)

Lưu ý: Khi dùng mode='a', Excel sẽ thêm sheet mới vào file hiện có. Nếu muốn ghi đè, dùng mode='w'.

5.3 Ưu điểm

  • Độ linh hoạt cao: Có thể thực hiện các phép biến đổi phức tạp (merge, groupby, pivot) trước khi ghi lại.
  • Khả năng xử lý dữ liệu lớn: pandas hiệu quả hơn Excel khi làm việc với hàng אותי.
  • Tích hợp vào pipeline: Bạn có thể chạy script tự động trong hệ thống ETL.

6. Mẹo và lưu ý khi merge sheet

#MẹoGiải thích
1Kiểm tra tiêu đềĐảm bảo tất cả sheet có tiêu đề giống nhau, tránh dữ liệu bị sai lệch.
2Xóa duplicateSử dụng Remove Duplicates trong Excel hoặc drop_duplicates() trong pandas.
3Kiểm tra dữ liệu thiếuNếu một sheet thiếu một cột evolution, hãy điền giá trị NA hoặc null.
4Sử dụng công thức INDEX+SMALLKhi copy, bạn có thể sử dụng công thức để tự động lấy dữ liệu từ nhiều sheet.
5Lưu file backupTrước khi thực hiện merge, luôn sao lưu file gốc.
6Kiểm tra kiểu dữ liệuĐảm bảo cột ngày tháng, số tiền được định dạng đúng để tránh lỗi trong tính toán.
7Tự động refreshNếu dùng Power Query, hãy thiết lập “Refresh on open” trong tính năng “Workbook Queries”.
8Lưu ý về kích thước fileGộp quá nhiều sheet có thể làm file Excel trở nên lớn, gây chậm trễ hoặc lỗi.

7. Ví dụ thực tế: Gộp dữ liệu bán hàng hàng tháng

Giả sử bạn có file Excel “SalesData.xlsx” với 12 sheet, mỗi sheet là dữ liệu bán hàng của một tháng (Jan, Feb, …, Dec). Bạn muốn tạo một sheet “AllSales” chứa toàn bộ dữ liệu để tính tổng doanh thu, phân tích theo khu vực, sản phẩm, v.v.

7.1 Sử dụng Power Query

  1. Mở “Data” → ceiling “Get Data” → “From Other Sources” → “Blank Query”.
  2. Mở “Advanced Editor” và dán đoạn mã sau:

m let Source = Excel.CurrentWorkbook(), FilteredSheets = Table.SelectRows(Source, each Text.Contains(Name, "Jan") or Text.Contains(Name, "Feb") or ... ), ExpandedData = Table.ExpandTableColumn(FilteredSheets, "Data", {"ProductID","ProductName","Region","Quantity","Price","Date"}, {"ProductID","ProductName","Region","Quantity","Price","Date"}), Combined = Table.Combine(ExpandedData) in Combined

  1. Click “Close & Load” → “Close & Load To…” → “Table in Existing Worksheet” → “AllSales”.

7.2 Tính tổng doanh thu

Trong sheet “AllSales”, bạn có thể thêm cột “Revenue” bằng công thức:

= Quantity Price

Sau đó, dùng PivotTable để tính tổng doanh thu theo tháng, khu vực, hoặc sản phẩm.

8. Kết luận

Việc gộp nhiều sheet trong một file Excel vào một sheet là một kỹ thuật thiết yếu giúp bạn tiết kiệm thời gian, tăng tính chính xác và chuẩn bị dữ liệu cho các bước phân tích sâu hơn. Tùy theo nhu cầu và quy mô dữ liệu, bạn có thể chọn một trong những phương pháp sau:

  • Thủ công: Dành cho file nhỏ, ít sheet.
  • Power Query:ಸುđộ an toàn, tự động cập nhật, phù hợp với dữ liệu trung bình.
  • VBA Macro: Tùy biến cao, tự động hoá.
  • Python: Xử lý dữ liệu lớn, tích hợp vào quy trình ETL.

Những mẹo và lưu ý đã nêu sẽ giúp bạn tránh được những lỗi phổ biến khi merge. Bây giờ, hãy thử áp dụng một trong những phương pháp trên vào dự án của bạn, và trải nghiệm sự tiện lợi mà dữ liệu duy nhất mang lại. Happy merging!

⚠️
LƯU Ý QUAN TRỌNG: Miễn trừ trách nhiệm: Mặc dù chúng tôi luôn nỗ lực để đảm bảo tính chính xác và cập nhật của thông tin, nhưng các quy định về giáo dục và tuyển sinh có thể thay đổi theo thời gian. BigSchool không chịu trách nhiệm về bất kỳ sai sót nào hoặc kết quả phát sinh từ việc sử dụng thông tin trên trang này. Độc giả nên liên hệ trực tiếp với nhà trường hoặc cơ quan chức năng để có thông tin mới nhất. Ngoài ra, BigSchool tuyệt đối không bán sản phẩm, khóa học hay cung cấp dịch vụ được nhắc đến trong bài.

Viết một bình luận