Cách Gộp Dữ Liệu Nhiều Sheet Thành 1 Bảng Tổng Hợp (2026)
Mục lục:
- 1. Vấn đề thường gặp khi dữ liệu nằm rải rác nhiều sheet
- 2. Gộp nhiều sheet trong cùng một file bằng công thức
- 3. Dùng Pivot Table khi cần tổng hợp có điều kiện
- 4. Gộp dữ liệu từ nhiều file Google Sheets khác nhau
- 5. Xử lý trùng lặp và sai lệch định dạng sau khi gộp
- 6. Tự động hóa việc gộp khi có quá nhiều sheet nguồn
- 7. Chọn cách nào cho đúng tình huống
- 8. Câu hỏi thường gặp
Vấn đề thường gặp khi dữ liệu nằm rải rác nhiều sheet
Cửa hàng có 5 chi nhánh, mỗi chi nhánh một sheet doanh thu riêng. Cuối tháng, kế toán mở từng file, copy-paste tay vào một bảng tổng, rồi ngồi dò lại xem có sót dòng nào không. Làm một lần thì ổn, nhưng tháng nào cũng lặp lại kiểu này thì sai sót là chuyện sớm muộn — dán nhầm cột, quên cập nhật sheet mới thêm, hoặc định dạng số bị lệch giữa các file.
Cái khó không nằm ở việc "gộp được hay không" — Google Sheets có cả chục cách để làm chuyện đó. Cái khó là chọn đúng cách cho đúng tình huống. Gộp 3 sheet trong cùng 1 file khác hẳn với gộp dữ liệu từ 10 file riêng biệt do 10 người khác nhau quản lý. Bài này đi thẳng vào từng cách, kèm ví dụ cụ thể để biết lúc nào dùng cái nào.
Gộp nhiều sheet trong cùng một file bằng công thức
Nếu các sheet nằm chung một file Google Sheets — ví dụ mỗi tháng một sheet doanh thu, tên là "Thang1", "Thang2", "Thang3" — cách nhanh nhất là dùng hàm nối mảng theo chiều dọc với dấu ngoặc nhọn.
Giả sử cả 3 sheet đều có cấu trúc giống hệt nhau: cột A là ngày, cột B là sản phẩm, cột C là doanh thu, dữ liệu bắt đầu từ dòng 2. Tại sheet "Tonghop", ô A2 gõ:
={Thang1!A2:C; Thang2!A2:C; Thang3!A2:C}
Dấu chấm phẩy trong ngoặc nhọn nghĩa là "nối theo hàng" (xếp chồng lên nhau), khác với dấu phẩy là nối theo cột. Công thức này tự động cập nhật khi dữ liệu nguồn thay đổi — thêm một dòng doanh thu vào Thang2, bảng tổng hợp tự nhảy theo, không cần copy-paste lại.
Hạn chế thật của cách này: nếu số cột hoặc thứ tự cột giữa các sheet không khớp nhau tuyệt đối, kết quả sẽ lệch hàng lệch cột mà không báo lỗi gì cả — đây là kiểu lỗi âm thầm, khó phát hiện nhất. Ngoài ra công thức mảng dạng này không tự thêm sheet mới; nếu tháng 4 có thêm "Thang4", bạn phải sửa lại công thức.
Khi bảng tổng hợp đã dựng xong, muốn biết nhanh tổng doanh thu tháng nào cao nhất mà không cần thêm cột tính, tham khảo cách tính tổng một cột trong Google Sheets để cộng nhanh theo điều kiện.
Dùng Pivot Table khi cần tổng hợp có điều kiện
Công thức mảng ở trên gộp dữ liệu thô — tức là dán chồng các hàng lại, không tính toán gì. Nhưng nếu mục tiêu là "tổng doanh thu theo từng chi nhánh theo từng tháng" thì gộp thô xong vẫn phải tự tính tổng bằng tay hoặc SUMIF thêm một lớp nữa.
Cách gọn hơn: gộp dữ liệu thô trước bằng công thức mảng ở trên (hoặc IMPORTRANGE nếu khác file, nói ở phần sau), sau đó dựng một Pivot Table trên bảng tổng hợp đó. Pivot Table sẽ tự nhóm theo cột chi nhánh, tự tính tổng/đếm/trung bình theo cột doanh thu, và khi dữ liệu nguồn cập nhật, chỉ cần bấm "Refresh" là Pivot cập nhật theo — không phải viết lại công thức. Với người chưa quen thao tác Pivot Table trong Google Sheets, bài Pivot Table — Tổng hợp dữ liệu trong 5 phút hướng dẫn từng bước dựng bảng Pivot đầu tiên, từ chọn vùng dữ liệu đến kéo thả trường vào Rows/Values.
Một điểm hay bị bỏ qua: Pivot Table chỉ "nhìn thấy" vùng dữ liệu đã chọn khi tạo. Nếu bảng nguồn có thêm dòng mới nằm ngoài vùng ban đầu, Pivot không tự mở rộng — phải vào Pivot editor sửa lại phạm vi. Cách né việc này là chọn cả cột (ví dụ A:D) thay vì chọn cứng số dòng khi tạo Pivot.
Gộp dữ liệu từ nhiều file Google Sheets khác nhau
Tình huống phổ biến hơn trong thực tế doanh nghiệp: mỗi chi nhánh có một file riêng, do người khác quản lý, bạn không có quyền gộp chung vào một file. Lúc này hàm nối mảng ở trên không dùng được vì nó chỉ hoạt động trong cùng một file. Giải pháp là IMPORTRANGE — hàm kéo dữ liệu từ file Google Sheets khác về file hiện tại, dựa trên URL và tên vùng dữ liệu. Cú pháp:
=IMPORTRANGE("URL-file-nguon", "TenSheet!A2:C100")
Lần đầu dùng, Sheets sẽ hỏi "Allow access" — phải bấm cho phép thì công thức mới chạy. Nếu file nguồn đổi quyền chia sẻ sau này, IMPORTRANGE sẽ báo lỗi #REF! ngay, khá dễ phát hiện.
Kết hợp IMPORTRANGE với dấu ngoặc nhọn để gộp nhiều file cùng lúc:
={IMPORTRANGE("url-file-1", "DoanhThu!A2:C"); IMPORTRANGE("url-file-2", "DoanhThu!A2:C"); IMPORTRANGE("url-file-3", "DoanhThu!A2:C")}
Cách này mình hay dùng khi các chi nhánh không chịu chung một file (lý do phân quyền, hoặc mỗi chi nhánh tự quản dữ liệu của mình). Nhược điểm là tốc độ tải chậm hơn hẳn khi số file nguồn tăng lên — trên 5-6 file IMPORTRANGE lồng nhau, sheet tổng hợp có thể mất vài giây mỗi lần mở hoặc chỉnh sửa. Nếu bạn đang cân nhắc giữa IMPORTRANGE và các cách liên kết dữ liệu khác giữa các Sheets, bài Cách liên kết dữ liệu giữa các Google Sheets [IMPORTRANGE 2026] đi sâu hơn vào các biến thể và giới hạn của hàm này.
Xử lý trùng lặp và sai lệch định dạng sau khi gộp
Gộp xong không có nghĩa là xong việc. Ba lỗi hay gặp nhất sau khi dán nhiều sheet lại với nhau:
- Trùng dòng — thường do một đơn hàng bị nhập ở cả sheet chi nhánh lẫn sheet tổng do nhân viên nhập tay hai lần
- Định dạng ngày tháng lệch — sheet này ghi 05/03/2026 (ngày/tháng/năm), sheet khác lại là kiểu Mỹ (tháng/ngày/năm), gộp lại thành hai định dạng lẫn lộn trong cùng một cột
- Đơn vị số không khớp — một sheet ghi doanh thu bằng nghìn đồng, sheet khác ghi nguyên đồng, gộp lại là sai lệch tổng ngay lập tức
Với lỗi trùng dòng, cách kiểm tra nhanh nhất là tô màu các giá trị trùng lặp trong cột mã đơn hàng hoặc mã khách hàng để mắt thường bắt được ngay, thay vì lọc bằng công thức COUNTIF rồi ngồi soi từng dòng. Hướng dẫn chi tiết cách làm nằm ở bài Cách tô màu dữ liệu trùng lặp trong Google Sheets.
Với lỗi định dạng ngày và đơn vị số, cách chắc ăn nhất là chuẩn hóa ngay tại sheet nguồn trước khi gộp, chứ không sửa ở bảng tổng hợp. Sửa tại nguồn thì công thức gộp tự động lấy đúng dữ liệu đã sạch; sửa tại bảng tổng hợp thì lần gộp sau lại dính lỗi y hệt vì công thức kéo lại dữ liệu thô từ nguồn.
Tự động hóa việc gộp khi có quá nhiều sheet nguồn
Công thức mảng và IMPORTRANGE ổn với vài chục sheet nguồn. Nhưng nếu bạn quản lý 50, 100 sheet chi nhánh, đại lý, hoặc cộng tác viên — mỗi người báo cáo qua một sheet riêng — việc liệt kê từng URL trong công thức trở nên cồng kềnh và dễ gãy khi có ai đó đổi tên tab hoặc xóa nhầm cột. Trường hợp này, Apps Script là lựa chọn hợp lý hơn công thức thuần. Một script chạy định kỳ (trigger theo giờ hoặc theo ngày) có thể quét qua danh sách URL các file nguồn, đọc dữ liệu bằng SpreadsheetApp.openByUrl(), rồi ghi vào sheet tổng hợp — không phụ thuộc vào việc người dùng có mở file hay không, vốn là giới hạn của công thức thông thường (công thức chỉ tính lại khi file đang mở hoặc khi có trigger onEdit). Nếu quy trình gộp dữ liệu của bạn còn kết nối thêm với các kênh khác — ví dụ nhân viên báo cáo doanh số qua Telegram thay vì nhập trực tiếp vào Sheets — có thể tham khảo cách dựng luồng tự động ghi dữ liệu vào Sheets từ xa trong bài Tạo Chatbot Telegram đọc/ghi dữ liệu Google Sheets bằng Apps Script — cùng nguyên lý Apps Script đọc/ghi tự động, chỉ khác nguồn đầu vào.
Với các doanh nghiệp SME không có ai rành Apps Script, những công cụ dựng sẵn trên nền Google Sheets như SheetStore cũng là một hướng — tránh phải tự viết và bảo trì script khi quy trình gộp dữ liệu trở nên phức tạp dần theo thời gian.
Chọn cách nào cho đúng tình huống
| Tình huống | Cách nên dùng | Lý do |
|---|---|---|
| Vài sheet cùng 1 file, cấu trúc giống nhau | Công thức mảng {A2:C; B2:D} | Nhanh, tự cập nhật, không cần script |
| Cần tổng hợp theo nhóm/điều kiện | Pivot Table trên bảng đã gộp | Tự tính tổng, dễ đổi cách nhóm |
| Dữ liệu nằm ở file khác nhau (5-10 file) | IMPORTRANGE lồng trong dấu ngoặc nhọn | Kéo được xuyên file, không cần quyền chỉnh sửa file gốc |
| Trên 20-30 file nguồn, cần chạy tự động định kỳ | Apps Script với trigger theo giờ | Không phụ thuộc file có đang mở hay không, xử lý được số lượng lớn |
Nhìn vào bảng trên dễ thấy quy luật: càng nhiều sheet nguồn và càng cần chạy đều đặn, công thức càng đuối sức, phải chuyển dần sang script. Ngược lại nếu chỉ gộp một lần cho báo cáo tháng này, công thức mảng đơn giản là đủ, không cần đầu tư viết script làm gì cho phức tạp thêm.
Câu hỏi thường gặp
Gộp dữ liệu từ nhiều tab trong cùng 1 file Google Sheets như thế nào?
Dùng dấu ngoặc nhọn {} để nối các vùng dữ liệu theo chiều dọc, ví dụ ={Sheet1!A2:D; Sheet2!A2:D; Sheet3!A2:D}. Các tab phải có cùng số cột và thứ tự cột giống nhau thì kết quả mới đúng.
Có cần cùng cấu trúc cột giữa các sheet trước khi gộp không?
Có. Nếu các sheet có số cột hoặc thứ tự cột khác nhau, dùng hàm mảng {} hoặc QUERY sẽ bị lệch dữ liệu. Nên chuẩn hóa tiêu đề cột giống nhau ở tất cả các tab/file trước khi gộp.
Làm sao gộp dữ liệu từ nhiều file Google Sheets khác nhau, không chỉ nhiều tab?
Dùng IMPORTRANGE để kéo dữ liệu từng file về 1 sheet trung gian, sau đó dùng {} hoặc QUERY để gộp các vùng đó lại. Lưu ý phải cấp quyền truy cập cho từng file nguồn ở lần chạy đầu tiên.
Khi nào nên dùng Apps Script thay vì công thức để gộp dữ liệu?
Khi số lượng sheet nhiều (10+), dữ liệu cập nhật liên tục, hoặc cần xử lý logic phức tạp như loại trùng, gộp theo điều kiện. Apps Script chạy nhanh hơn công thức mảng và không bị giới hạn dung lượng tính toán.
Bài viết liên quan:
Bạn muốn áp dụng ngay mà không phải tự xây từ đầu?
Khám phá các mẫu Google Sheets và phần mềm quản lý dựng sẵn cho doanh nghiệp Việt tại SheetStore Marketplace.
📚 Bài Viết Liên Quan
- Apps Script Từ A Đến Z - Bài 1: Giới Thiệu và Các Khái Niệm Cơ Bản
- Giải Pháp Google Sheets Cho Ngành Bán Lẻ 2027: Từ Cửa Hàng Đơn Đến Chuỗi
- Template Google Sheets Quản Lý Thu Chi Hội Nhóm và CLB 2027: Minh Bạch Tài Chính Cộng Đồng
- Template Google Sheets Quản Lý Chiến Dịch Email Marketing 2027: Theo Dõi Open Rate và Conversion
Chia sẻ bài viết:
Tuân Hoang
Đội ngũ SheetStore
Google Workspace Certified, 5+ years experience
Bạn thấy bài viết hữu ích?
Đăng ký nhận thông báo khi có bài viết mới.


