Hướng dẫn

Cách Gộp Dữ Liệu Nhiều Sheet Thành 1 Bảng Tổng Hợp (2026)

Tuân HoangTuân Hoang
24 tháng 8, 2026
9 phút đọc
Ảnh minh họa bài viết: Cách Gộp Dữ Liệu Nhiều Sheet Thành 1 Bảng Tổng Hợp (2026)

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ốngCách nên dùngLý do
Vài sheet cùng 1 file, cấu trúc giống nhauCô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ệnPivot Table trên bảng đã gộpTự 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ọnKé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ạ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.

Chia sẻ bài viết:

Tuân Hoang

Tuân Hoang

Đội ngũ SheetStore

Google SheetsGoogle Apps ScriptCRMAutomationPhần mềm quản lý doanh nghiệp

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.

Nhận thông báo khi có bài viết mới. Không spam, hứa luôn! 😊

Bình luận (0)

Vui lòng đăng nhập để tham gia thảo luận