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.
Đố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
Mở file Excel chứa các sheet cần gộp.
Tạo một sheet mới, đặt tên “Merge” (hoặc tên tùy ý).
Chọn sheet đầu tiên, bấm Ctrl + A để chọn toàn bộ dữ liệu, sau đó Ctrl + C để copy.
Chuyển đến sheet “Merge”, chọn ô A1, bấm Ctrl + V để dán.
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).
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.
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
Mở Power Query:
Trong tab “Data”, chọn “Get Data” → “From Other Sources” → “Blank Query”.
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.
Chỉnh sửa cột tiêu đề:
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.
Hoặc chuyển dữ liệu vào sheet “Merge” và chỉnh sửa thủ công.
Lưu kết quả:
Trong Power Query, chọn “Close & Load” → “Close & Load To…” → “Table in New Worksheet” hoặc “Existing Worksheet”.
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.
Mở file Excel, nhấn Alt + F11 để mở Visual Basic Editor.
Vào Insert → Module, dán mã vào.
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ẹo
Giải thích
1
Kiể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.
2
Xóa duplicate
Sử dụng Remove Duplicates trong Excel hoặc drop_duplicates() trong pandas.
3
Kiểm tra dữ liệu thiếu
Nếu một sheet thiếu một cột evolution, hãy điền giá trị NA hoặc null.
4
Sử dụng công thức INDEX+SMALL
Khi copy, bạn có thể sử dụng công thức để tự động lấy dữ liệu từ nhiều sheet.
5
Lưu file backup
Trước khi thực hiện merge, luôn sao lưu file gốc.
6
Kiể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.
7
Tự động refresh
Nếu dùng Power Query, hãy thiết lập “Refresh on open” trong tính năng “Workbook Queries”.
8
Lưu ý về kích thước file
Gộ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.
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
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!
Tiến sĩ Lê Thống Nhất sinh năm 1955 tại Nghệ An, là nhà giáo, nhà báo và doanh nhân trong lĩnh vực giáo dục. Ông từng giảng dạy Toán học tại Trường THPT Chuyên Phan Bội Châu và đảm nhiệm nhiều vai trò trong ngành giáo dục, từ viết sách, biên soạn tài liệu đến sáng lập các dự án hỗ trợ học tập trực tuyến.
Ông là người sáng lập BigSchool – nền tảng giáo dục trực tuyến kết nối giáo viên và học sinh cả nước. Ngoài ra, ông còn nổi tiếng với vai trò tác giả, diễn giả truyền cảm hứng và khách mời trên nhiều chương trình truyền hình, trong đó có “Ai là triệu phú” trên truyền hình VTV.
Trong suốt sự nghiệp, Tiến sĩ Lê Thống Nhất đã nhận nhiều giải thưởng giáo dục và được biết đến như một người luôn đổi mới, ứng dụng công nghệ vào dạy và học, góp phần lan tỏa tri thức và niềm say mê học tập cho thế hệ trẻ.
⚠️
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.