Bỏ qua để đến nội dung chính
Điền NguyễnAZ

google-sheets

Cách tạo báo cáo tự động cập nhật bằng Google Sheets (không cần copy-paste lại mỗi ngày)

06/09/2026· Điền Nguyễn AZ
Cách tạo báo cáo tự động cập nhật bằng Google Sheets (không cần copy-paste lại mỗi ngày)

Vì sao báo cáo hay bị sai khi làm thủ công?

Cách làm báo cáo phổ biến nhất là: mở sheet dữ liệu gốc, lọc/copy số liệu cần thiết, dán sang một sheet báo cáo riêng để trình bày đẹp hơn. Cách này có ba vấn đề:

  • Dữ liệu nguồn cập nhật thêm (ví dụ thêm đơn hàng mới) nhưng báo cáo đã dán thì đứng yên, không tự thay đổi.
  • Mỗi lần muốn cập nhật phải làm lại thao tác lọc — copy — dán từ đầu, tốn thời gian và dễ copy nhầm vùng, sót dòng.
  • Nhiều người cùng dùng chung file dễ dán đè lên công thức hoặc định dạng đã làm trước đó.

Cách khắc phục là không copy-paste giá trị, mà để báo cáo tham chiếu trực tiếp tới dữ liệu nguồn bằng công thức. Khi dữ liệu nguồn thay đổi, báo cáo tự tính lại ngay lập tức.

Nguyên tắc cốt lõi: tách sheet dữ liệu và sheet báo cáo

Trước khi dùng công thức nào, cần tách file thành 2 phần rõ ràng:

  1. Sheet dữ liệu (data): nơi nhập liệu hằng ngày, mỗi dòng là một bản ghi (một đơn hàng, một giao dịch...), mỗi cột là một trường thông tin. Không định dạng màu mè, không để dòng trống xen giữa.
  2. Sheet báo cáo (report): chỉ chứa công thức tham chiếu tới sheet dữ liệu, không gõ tay bất kỳ số liệu nào.

Ví dụ dữ liệu nguồn ở sheet DuLieu, từ dòng 2 (dòng 1 là tiêu đề):

A B C D
1 Ngày Sản phẩm Khu vực Doanh thu
2 01/09 Bàn ghế Vinh 12000000
3 02/09 Tủ gỗ Hà Nội 8500000
4 03/09 Bàn ghế Vinh 15000000
5 04/09 Bàn ghế Hà Nội 9000000

Nhân viên chỉ thêm dòng mới vào sheet DuLieu này mỗi ngày. Toàn bộ báo cáo phía dưới sẽ tự cập nhật theo.

Bước 1: Tổng hợp báo cáo động bằng hàm QUERY

Ở sheet BaoCao, thay vì copy số liệu, dùng hàm QUERY để lấy và tổng hợp trực tiếp từ sheet DuLieu:

=QUERY(DuLieu!A1:D, "select B, sum(D) where B is not null group by B label sum(D) 'Tổng doanh thu'", 1)

Công thức này tự động:

  • Nhóm dữ liệu theo cột Sản phẩm (cột B).
  • Cộng tổng cột Doanh thu (cột D) cho từng sản phẩm.
  • Tự thêm dòng mới vào bảng tổng hợp ngay khi sheet DuLieu có sản phẩm mới, không cần sửa công thức.

Muốn lọc thêm theo khu vực, chỉ cần thêm điều kiện where:

=QUERY(DuLieu!A1:D, "select B, sum(D) where C = 'Vinh' group by B label sum(D) 'Tổng doanh thu'", 1)

Lưu ý cú pháp: QUERY dùng cú pháp giống câu lệnh SQL đơn giản (select, where, group by), viết trong dấu ngoặc kép, tên cột viết theo ký hiệu cột (A, B, C...) chứ không phải tên tiêu đề.

Bước 2: Dùng Pivot Table khi cần bảng tổng hợp nhiều chiều

QUERY phù hợp cho báo cáo có công thức lọc rõ ràng. Khi cần xoay bảng theo nhiều chiều cùng lúc (ví dụ vừa theo sản phẩm, vừa theo khu vực, vừa theo tháng), dùng Pivot Table sẽ nhanh hơn:

  1. Bôi đen toàn bộ vùng dữ liệu ở sheet DuLieu (kể cả dòng tiêu đề).
  2. Vào Insert → Pivot table → chọn đặt ở sheet mới.
  3. Trong bảng cấu hình, kéo Sản phẩm vào Rows, Khu vực vào Columns, Doanh thu vào Values (chọn hàm SUM).

Pivot Table sẽ tự cập nhật số liệu mỗi khi dữ liệu nguồn thay đổi — chỉ cần bấm biểu tượng refresh (mũi tên xoay tròn) ở góc bảng nếu số dòng dữ liệu thay đổi (Pivot Table đôi khi không tự mở rộng vùng nguồn khi bạn thêm dòng mới ở cuối bảng, nên vẫn cần bấm refresh sau khi thêm dữ liệu).

Mẹo: để Pivot Table tự nhận thêm dòng mới mà không cần chỉnh lại vùng nguồn, khi chọn vùng dữ liệu ở bước 1, hãy chọn dư ra vài trăm dòng trống phía dưới (ví dụ A1:D1000 thay vì A1:D5) — các dòng trống không ảnh hưởng tới kết quả tính toán.

Bước 3: Trực quan hóa bằng biểu đồ liên kết trực tiếp

Biểu đồ trong Google Sheets mặc định đã liên kết trực tiếp với vùng dữ liệu bạn chọn khi tạo, nên tự cập nhật theo dữ liệu nguồn mà không cần thao tác gì thêm:

  1. Bôi đen bảng kết quả từ QUERY hoặc Pivot Table ở Bước 1/2 (không phải bảng dữ liệu thô).
  2. Vào Insert → Chart.
  3. Chọn loại biểu đồ phù hợp (cột để so sánh giữa các nhóm, đường để xem xu hướng theo thời gian).

Vì biểu đồ tham chiếu tới bảng QUERY/Pivot Table (chứ không phải dữ liệu thô), khi dữ liệu nguồn thay đổi → bảng QUERY tính lại → biểu đồ tự vẽ lại theo đúng số liệu mới, không có bước trung gian nào cần làm tay.

Nâng cao: tự động refresh báo cáo theo lịch bằng Apps Script

Với công thức QUERY và Pivot Table, báo cáo đã tự cập nhật ngay khi có người sửa dữ liệu trong cùng file. Nhưng nếu dữ liệu nguồn nằm ở file Google Sheets khác (lấy qua IMPORTRANGE) hoặc cần làm thêm việc khác mỗi ngày (ví dụ gửi email tổng hợp), có thể dùng Google Apps Script để chạy tự động theo lịch:

  1. Vào Extensions → Apps Script.
  2. Viết một hàm đơn giản, ví dụ để ép Sheets tính lại toàn bộ công thức:
function capNhatBaoCao() {
  SpreadsheetApp.flush();
}
  1. Bấm biểu tượng đồng hồ (Triggers) ở thanh bên trái → Add Trigger → chọn hàm capNhatBaoCao, chọn loại sự kiện Time-driven, đặt tần suất (ví dụ mỗi giờ hoặc mỗi ngày lúc 7h sáng).

Cách này hữu ích khi báo cáo phụ thuộc vào IMPORTRANGE từ file khác — IMPORTRANGE đôi khi cần được "đánh thức" bằng một thao tác tính toán lại để lấy dữ liệu mới nhất, thay vì phải mở file bằng tay mỗi lần.

So sánh 3 cách làm báo cáo tự động

Cách làm Phù hợp khi Độ phức tạp
Hàm QUERY Cần lọc/tổng hợp theo điều kiện rõ ràng, muốn công thức tự thêm dòng mới Trung bình, cần biết cú pháp giống SQL
Pivot Table Cần xoay bảng nhiều chiều (nhiều cột phân loại cùng lúc), không cần viết công thức Dễ, thao tác kéo-thả
Apps Script (Trigger) Dữ liệu lấy từ file khác qua IMPORTRANGE, hoặc cần chạy thêm hành động khác (gửi email, ghi log) Cao hơn, cần biết chút lập trình cơ bản

Lỗi thường gặp

QUERY báo lỗi "Unable to parse query string" Thường do đặt tên cột sai (dùng tên tiêu đề thay vì ký hiệu cột A, B, C...), thiếu dấu ngoặc kép cho điều kiện dạng chữ, hoặc dùng dấu phẩy thay vì đúng cú pháp where/group by. Kiểm tra lại từng phần của câu truy vấn, có thể tách ra thử từng mệnh đề một.

Pivot Table không hiện dữ liệu mới thêm vào Do vùng nguồn của Pivot Table đã cố định đúng bằng số dòng lúc tạo, không tự mở rộng. Vào Pivot table editor → Data range, sửa lại vùng cho rộng hơn, hoặc bấm refresh sau khi cập nhật.

Biểu đồ không đổi dù bảng QUERY đã có số liệu mới Kiểm tra xem biểu đồ có đang tham chiếu đúng vùng bảng kết quả QUERY hay không — nếu QUERY tự thêm dòng mới ra ngoài vùng ban đầu bạn chọn khi tạo biểu đồ, cần chỉnh lại vùng dữ liệu của biểu đồ (Edit chart → Data range) cho đủ rộng.

IMPORTRANGE không lấy dữ liệu mới nhất từ file khác IMPORTRANGE không tự làm mới liên tục — cần có thao tác kích hoạt tính toán lại (sửa một ô bất kỳ, hoặc dùng Apps Script như Bước nâng cao ở trên) để Sheets lấy lại dữ liệu mới nhất từ file nguồn.

Học Google Sheets thực chiến tại TP Vinh

Dựng được một bộ báo cáo tự động cập nhật giúp tiết kiệm rất nhiều thời gian so với làm thủ công mỗi ngày, nhưng cần nắm chắc QUERY, Pivot Table và cách tổ chức dữ liệu ngay từ đầu. Nếu bạn muốn học Google Sheets bài bản, từ các hàm cơ bản đến dựng báo cáo, dashboard tự động, tham khảo khóa học Google Sheets tại Điền Nguyễn AZ.

📞 Hotline / Zalo: 0362 465 361

👉 Xem chi tiết: Khóa học Google Sheets thực tế tại TP Vinh

#báo cáo tự động google sheets#hàm query#pivot table google sheets#google sheets nâng cao

Tài liệu miễn phí

30 phím tắt Excel hay dùng nhất

Tổng hợp phím tắt giúp thao tác Excel nhanh hơn — điền thông tin để tải file PDF miễn phí về dùng ngay.