Cách Tạo Báo Cáo Doanh Thu Theo Từng Chi Nhánh Trên Google Sheets 2026
Mục lục:
- 1. Vì sao báo cáo doanh thu gộp cả công ty không đủ để quản lý chi nhánh
- 2. Cấu trúc dữ liệu gốc: đặt nền trước khi tính toán
- 3. Tính doanh thu theo chi nhánh bằng SUMIFS và QUERY
- 4. Dashboard so sánh chi nhánh: PivotTable kết hợp biểu đồ
- 5. Xử lý tình huống thực tế: chi nhánh mới mở, dữ liệu thiếu, nhập trễ
- 6. Khi nào Google Sheets không còn đủ và nên chuyển hướng
- 7. Kết hợp báo cáo chi nhánh vào bức tranh tài chính lớn hơn
- 8. Câu hỏi thường gặp
Vì sao báo cáo doanh thu gộp cả công ty không đủ để quản lý chi nhánh
Chủ chuỗi 3-5 cửa hàng thường bắt đầu bằng một sheet doanh thu duy nhất, cộng dồn số từ tất cả các điểm bán. Vấn đề lộ ra khi cuối tháng ngồi họp: chi nhánh Q7 tăng trưởng 15% nhưng chi nhánh Bình Thạnh âm 8%, còn con số tổng thì vẫn dương nhẹ — kết quả là không ai bị hỏi vì sao doanh thu giảm, vì báo cáo tổng che hết. Tách doanh thu theo chi nhánh không phải để "đẹp báo cáo", mà để nhìn ra chi nhánh nào đang kéo cả hệ thống đi xuống trước khi số liệu quý sau xác nhận điều đó.
Cái khó thực tế không nằm ở việc thêm cột "Chi nhánh" vào bảng dữ liệu — ai cũng làm được. Cái khó là giữ cho báo cáo đó tự cập nhật khi có chi nhánh mới mở, khi nhân viên nhập liệu sai tên chi nhánh (viết hoa/thường khác nhau, dấu cách thừa), và khi sếp muốn xem so sánh nhanh mà không phải lọc filter thủ công mỗi lần.
Cấu trúc dữ liệu gốc: đặt nền trước khi tính toán
Sai lầm phổ biến nhất là thiết kế sheet nhập liệu theo chiều ngang — mỗi chi nhánh một cột doanh thu riêng. Cách này nhìn thì gọn nhưng phá vỡ hoàn toàn khả năng dùng PivotTable hay hàm tổng hợp sau này. Cấu trúc đúng luôn là dữ liệu dạng "dài" (long format), mỗi dòng là một giao dịch hoặc một bản ghi doanh thu theo ngày:
- Ngày — định dạng ngày chuẩn (DATE), không nhập text tự do
- Mã chi nhánh — dùng mã cố định (CN01, CN02...) thay vì gõ tên tay để tránh trùng lặp do lỗi chính tả
- Tên chi nhánh — lấy từ bảng danh mục qua VLOOKUP, không gõ trực tiếp
- Danh mục sản phẩm/dịch vụ — nếu cần phân tích sâu hơn theo ngành hàng
- Doanh thu — số tiền, định dạng Number/Currency nhất quán
- Người nhập — để truy vết khi có sai lệch
Tạo riêng một sheet "Danh mục chi nhánh" chứa mã, tên đầy đủ, khu vực, ngày khai trương. Sheet nhập liệu chính chỉ chọn mã chi nhánh qua Data Validation (dropdown), tuyệt đối không cho gõ tay. Với chuỗi 20 cửa hàng trở lên, mình từng thấy trường hợp một chi nhánh bị tính trùng vào báo cáo tổng chỉ vì nhân viên hai nơi khác nhau gõ "Quận 7" và "Q7" — hai chuỗi ký tự khác nhau khiến SUMIF không gộp được, và không ai phát hiện suốt 3 tháng.
Tính doanh thu theo chi nhánh bằng SUMIFS và QUERY
Với dữ liệu đã chuẩn hóa dạng dài, có hai cách chính để tổng hợp: SUMIFS cho báo cáo cố định, QUERY cho báo cáo linh hoạt cần lọc động.
Cách 1 — SUMIFS khi cần bảng báo cáo cố định theo tháng
Giả sử sheet "DuLieu" có cột A (Ngày), B (Mã CN), C (Doanh thu). Tạo bảng tổng hợp ở sheet riêng, với công thức tại ô doanh thu của từng chi nhánh:
=SUMIFS(DuLieu!C:C, DuLieu!B:B, "CN01", DuLieu!A:A, ">="&DATE(2026,1,1), DuLieu!A:A, "<="&DATE(2026,1,31))
Công thức này gộp toàn bộ doanh thu của CN01 trong tháng 1/2026. Nhược điểm là phải viết lại công thức cho từng chi nhánh, từng tháng — với 15 chi nhánh x 12 tháng là 180 công thức phải kiểm tra tay. Cách khắc phục: dùng ô tham chiếu (cell reference) cho mã chi nhánh và khoảng ngày thay vì gõ cứng, để một công thức có thể kéo (fill) xuống toàn bộ bảng.
Cách 2 — QUERY khi cần báo cáo tự động không giới hạn số chi nhánh
Đây là cách mình khuyên dùng cho chuỗi từ 5 chi nhánh trở lên, vì không cần sửa công thức khi có chi nhánh mới:
=QUERY(DuLieu!A:C, "SELECT B, SUM(C) WHERE A >= date '2026-01-01' AND A <= date '2026-01-31' GROUP BY B LABEL SUM(C) 'Doanh thu'", 1)
Bảng kết quả tự động liệt kê tất cả mã chi nhánh có phát sinh doanh thu trong kỳ, kèm tổng — không cần biết trước có bao nhiêu chi nhánh. Khi mở thêm chi nhánh mới, chỉ cần thêm mã vào danh mục và dữ liệu nhập vào, báo cáo QUERY tự cập nhật dòng mới mà không phải sửa công thức. Nhược điểm duy nhất: QUERY nhạy với định dạng ngày trong Sheets locale Việt Nam đôi khi lệch, nên luôn kiểm tra lại cột Ngày đang ở dạng DATE thật (căn phải trong ô) chứ không phải text.
Dashboard so sánh chi nhánh: PivotTable kết hợp biểu đồ
Bảng số liệu thô hữu ích cho kế toán, nhưng chủ chuỗi ra quyết định nhanh hơn nhiều khi nhìn biểu đồ. Cách làm nhanh nhất là dùng PivotTable trên sheet dữ liệu gốc: Insert → Pivot table, chọn Rows là "Tên chi nhánh", Values là "SUM of Doanh thu", thêm Columns là "Tháng" nếu muốn xem xu hướng theo thời gian.
Sau khi có Pivot, chèn biểu đồ cột ngang (horizontal bar chart) sắp xếp giảm dần theo doanh thu — cách trình bày này giúp nhìn ngay chi nhánh dẫn đầu và chi nhánh yếu nhất trong 2 giây, thay vì đọc bảng số. Với chuỗi có trên 8 chi nhánh, thêm một biểu đồ đường (line chart) thể hiện % tăng trưởng theo tháng của từng chi nhánh so với tháng trước — công thức đơn giản là (DoanhThuThangNay - DoanhThuThangTruoc) / DoanhThuThangTruoc, định dạng phần trăm.
Một chi tiết hay bị bỏ qua: nên thêm cột "% đóng góp vào tổng doanh thu" cho mỗi chi nhánh, vì con số tuyệt đối dễ đánh lừa. Chi nhánh tăng 20 triệu nghe ấn tượng, nhưng nếu tổng công ty tăng 500 triệu thì đóng góp thực tế của chi nhánh đó chỉ 4%. Nếu công ty đã có sẵn dashboard kinh doanh tổng thể, có thể tham khảo cách bố cục và các chỉ số nên đưa vào trong hướng dẫn tạo dashboard kinh doanh trong Google Sheets để đồng bộ phong cách trình bày giữa báo cáo chi nhánh và dashboard tổng.
Xử lý tình huống thực tế: chi nhánh mới mở, dữ liệu thiếu, nhập trễ
Lý thuyết sạch sẽ nhưng thực tế nhập liệu chuỗi bán lẻ luôn có lỗ hổng. Ba tình huống hay gặp và cách xử lý:
Chi nhánh mới mở giữa tháng. Nếu tính % tăng trưởng theo tháng trước mà chi nhánh mới không có dữ liệu tháng trước, công thức chia sẽ ra lỗi #DIV/0!. Dùng IFERROR bọc ngoài công thức tăng trưởng: =IFERROR((B2-A2)/A2, "Mới mở") — vừa tránh lỗi hiển thị, vừa cho người đọc biết lý do không có số so sánh thay vì để ô trống gây hiểu lầm là 0%.
Nhân viên nhập trễ doanh thu cuối tháng. Đây là lỗi khiến báo cáo tháng bị thiếu số ngay tại thời điểm chốt sổ. Giải pháp không nằm ở công thức mà ở quy trình: thêm cột "Trạng thái xác nhận" ở sheet nhập liệu, dùng conditional formatting tô đỏ những ngày cuối tháng chưa có dữ liệu của bất kỳ chi nhánh nào, để người quản lý nhìn vào là biết ngay chi nhánh nào chưa nộp báo cáo trước khi khóa sổ.
Doanh thu bị trùng do nhập hai lần. Với chuỗi nhiều người nhập liệu, trùng lặp gần như chắc chắn xảy ra. Cách phát hiện nhanh: tạo cột kiểm tra trùng bằng COUNTIFS trên tổ hợp Ngày + Chi nhánh + Số tiền, nếu kết quả lớn hơn 1 thì đánh dấu nghi ngờ trùng để rà lại thủ công — không nên tự động xóa vì có trường hợp trùng số tiền là hợp lệ (hai đơn hàng cùng giá trị trong ngày).
Khi nào Google Sheets không còn đủ và nên chuyển hướng
Sheets xử lý tốt cho chuỗi dưới 20-30 chi nhánh với tần suất nhập liệu vài trăm dòng mỗi ngày. Vượt ngưỡng đó, hai vấn đề bắt đầu lộ ra: công thức QUERY và Pivot chạy chậm hẳn khi dữ liệu vượt vài chục nghìn dòng, và việc phân quyền — mỗi quản lý chi nhánh chỉ được xem số của mình, không thấy số chi nhánh khác — gần như không thể làm sạch sẽ trong Sheets thuần vì Google Sheets chia sẻ quyền theo file/sheet chứ không lọc theo dòng dữ liệu.
Cách phổ biến để né giới hạn phân quyền là tách file: mỗi chi nhánh một file nhập liệu riêng, rồi dùng IMPORTRANGE gom về file tổng hợp trung tâm. Cách này hoạt động nhưng phát sinh chi phí bảo trì — mỗi lần thêm chi nhánh phải setup lại IMPORTRANGE, và tốc độ tải chậm dần theo số file kết nối. Nếu team đã quen thao tác trên Sheets nhưng cần mô hình đa chiều rõ ràng hơn (theo vùng, theo đại lý, theo chi nhánh cùng lúc), có thể tham khảo cấu trúc trong template báo cáo bán hàng theo vùng và đại lý — cách chia lớp dữ liệu ở đó áp dụng được cho mô hình chi nhánh tương tự.
Ở SheetStore, phần lớn khách hàng chuyển sang các mẫu quản lý chuyên biệt khi số chi nhánh vượt 15 hoặc khi cần báo cáo tự động gửi qua email/Zalo hàng ngày mà không phải mở file thủ công — lúc đó Apps Script hoặc phần mềm quản lý xây trên nền Sheets xử lý ổn định hơn công thức thuần.
Kết hợp báo cáo chi nhánh vào bức tranh tài chính lớn hơn
Báo cáo doanh thu theo chi nhánh chỉ là một lớp trong hệ thống báo cáo tài chính đầy đủ. Con số doanh thu cao chưa nói lên gì nếu không đặt cạnh chi phí vận hành của từng chi nhánh — thuê mặt bằng Q1 đắt gấp đôi Q9 nhưng doanh thu chỉ cao hơn 20% thì thực chất Q1 đang lỗ biên. Nếu công ty đã có kế hoạch tài chính tổng thể, nên liên kết dữ liệu chi nhánh vào phần dự báo trong kế hoạch tài chính và dự báo doanh thu để nhìn xu hướng dài hạn thay vì chỉ so sánh tháng này với tháng trước.
Với công ty đã vận hành 2-3 năm và có nhu cầu báo cáo P&L riêng theo từng chi nhánh (không chỉ doanh thu mà cả lợi nhuận), cấu trúc bảng dữ liệu dài nói ở phần đầu bài này hoàn toàn tái sử dụng được — chỉ cần thêm cột chi phí và áp dụng logic tương tự trong các mẫu báo cáo tài chính doanh nghiệp chuẩn P&L, Cash Flow, Balance Sheet đã có sẵn.
Câu hỏi thường gặp
Nên tách mỗi chi nhánh một sheet riêng hay gộp chung một sheet dữ liệu?
Gộp chung 1 sheet dữ liệu thô có cột mã chi nhánh, rồi dùng QUERY hoặc Pivot Table lọc theo từng chi nhánh. Tách nhiều sheet khiến việc tổng hợp và đối chiếu số liệu giữa các chi nhánh phức tạp hơn, khó maintain khi số chi nhánh tăng lên.
Công thức nào phù hợp nhất để tính doanh thu theo từng chi nhánh?
SUMIFS khi cần tổng theo 1-2 điều kiện (chi nhánh, khoảng thời gian). QUERY khi cần bảng tổng hợp nhiều chi nhánh cùng lúc, ví dụ =QUERY(data, "SELECT ChiNhanh, SUM(DoanhThu) GROUP BY ChiNhanh"). Pivot Table phù hợp khi cần xoay chiều dữ liệu linh hoạt, không cần viết công thức.
Làm sao so sánh hiệu suất giữa các chi nhánh nhanh và trực quan?
Tạo bảng tổng hợp doanh thu, chi phí, lợi nhuận theo từng chi nhánh trên cùng hàng, dùng conditional formatting với color scale để làm nổi chi nhánh cao/thấp. Thêm cột % tăng trưởng so với kỳ trước để đánh giá xu hướng, không chỉ số tuyệt đối.
Dữ liệu bán hàng nhiều chi nhánh nhập tay dễ sai, có cách nào tự động hơn không?
Dùng Google Form riêng cho từng chi nhánh nhập liệu đổ về cùng 1 Sheet, hoặc kết nối qua Apps Script/API từ phần mềm bán hàng. Data validation cho cột mã chi nhánh (dropdown list) giúp tránh gõ sai tên, đảm bảo công thức lọc chạy đúng.
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.


