Mục lục (11 mục)
Cuối tháng, sếp hỏi: "Sao chi phí bán hàng vượt vậy em?". Kế toán mở file ra, chỉ có một bảng số: kế hoạch 200, thực tế 260. Con số thì đúng, nhưng chưa có lời giải thích, chưa biết ai chịu trách nhiệm, cũng chưa biết vượt như vậy là nặng hay nhẹ.
Phân tích chênh lệch ngân sách không khó. Khó ở chỗ làm sao để bảng số trả lời được câu hỏi "vì sao". Bài này giúp bạn:
- Dựng bảng Budget vs Actual dùng được ngay trên Excel.
- Biết khoản nào đáng soi, khoản nào bỏ qua.
- Tự động hóa bằng Python và dùng AI để soạn nhận xét, còn kết luận vẫn do bạn chịu trách nhiệm.
1. Budget vs Actual là gì và vì sao nhiều DN làm xong rồi để đó
Budget vs Actual là so sánh số kế hoạch (ngân sách) với số thực hiện, rồi tính chênh lệch tuyệt đối (Thực tế − Ngân sách) và chênh lệch % (chia cho Ngân sách).
Nhiều doanh nghiệp làm báo cáo này mỗi tháng nhưng không ai dùng. Ba lỗi hay gặp:
- Ngân sách lập một lần cả năm, không chỉnh. Thị trường đổi, giá nguyên liệu đổi mà con số vẫn nguyên, nên so sánh mất ý nghĩa.
- Chỉ nhìn tổng, không nhìn khoản mục. Tổng chi phí "gần đúng" có thể che một khoản vượt lớn bù bởi một khoản hụt.
- Chỉ báo con số, không có nguyên nhân và người chịu trách nhiệm. Báo cáo dừng ở "vượt 30%" thì không ai hành động.
2. Chuẩn bị dữ liệu: map tài khoản kế toán về khoản mục ngân sách
Trước khi so sánh, bạn phải đưa sổ cái và ngân sách về cùng một "ngôn ngữ". Ví dụ mapping cơ bản:
| Tài khoản | Khoản mục ngân sách | Loại |
|---|---|---|
| 511 (trừ 521 nếu có) | Doanh thu thuần | Doanh thu |
| 632 | Giá vốn hàng bán | Chi phí |
| 641 | Chi phí bán hàng | Chi phí |
| 642 | Chi phí QLDN | Chi phí |
Lưu ý: hệ thống tài khoản phụ thuộc chế độ kế toán công ty đang áp dụng. Hãy kiểm tra văn bản còn hiệu lực trước khi chốt bảng mapping.
Cấu trúc bảng dữ liệu nên là dạng "phẳng", mỗi dòng một bản ghi:
| Kỳ | Khoản mục | Trung tâm chi phí | Ngân sách | Thực tế |
|---|
Dạng phẳng giúp dùng SUMIFS, PivotTable hay Python rất dễ. Một lưu ý quan trọng: số thực tế phải lấy từ sổ cái sau khi đã chốt các bút toán trích trước và phân bổ. Nếu lấy số "nháp", bạn sẽ giải trình cho một con số rồi lại phải sửa.
3. Ví dụ minh họa: Công ty X tháng 9
Số liệu minh họa, giả định, đơn vị: triệu đồng, không phải số liệu của doanh nghiệp thật.
| Chỉ tiêu | Kế hoạch | Thực tế | Chênh lệch |
|---|---|---|---|
| Doanh thu | 2.000 | 1.850 | -150 (-7,5%) |
| Giá vốn | 1.400 (70%) | 1.350 (73%) | -50 |
| Lãi gộp | 600 | 500 | -100 |
| Chi phí bán hàng | 200 | 260 | +60 (+30%) |
| Chi phí QLDN | 150 | 148 | -2 |
| Lợi nhuận trước thuế | 250 | 92 | -158 |
Đọc nhanh: lợi nhuận hụt 158, trong đó khoảng 100 đến từ lãi gộp, 60 từ chi phí bán hàng, còn QLDN gần như đúng kế hoạch (tiết kiệm 2).
Nhìn kỹ hơn, giá vốn thực tế thấp hơn kế hoạch 50, trông như "có lợi". Nhưng bán ít hơn thì giá vốn đương nhiên thấp hơn. Chỉ số đáng nhìn là tỷ lệ giá vốn/doanh thu: 70% lên 73%. Hụt lãi gộp 100 có thể tách thành:
- Do doanh thu thấp: 150 × 30% = 45.
- Do tỷ lệ giá vốn tăng 3 điểm: 1.850 × 3% ≈ 55.
Đây là chỗ cần hỏi bộ phận: giá mua tăng, khuyến mãi sâu, hay cơ cấu hàng thay đổi?
4. Ngân sách tĩnh và ngân sách linh hoạt: tránh kết luận sai
Giả định chi phí bán hàng của Công ty X = 100 cố định + 5% doanh thu.
- Ngân sách tĩnh (doanh thu kế hoạch 2.000): 100 + 100 = 200. Thực tế 260 vượt 60.
- Ngân sách linh hoạt (doanh thu thực 1.850): 100 + 92,5 = 192,5. Thực tế 260 vượt 67,5.
Kết luận: tình hình còn tệ hơn vẻ ngoài. Doanh thu thấp hơn lẽ ra phải kéo chi phí biến đổi xuống, nhưng chi phí vẫn cao.
Khi nào dùng loại nào?
- Khoản biến đổi theo doanh thu (hoa hồng, vận chuyển, chiết khấu thanh toán) nên so với ngân sách linh hoạt.
- Khoản cố định (thuê mặt bằng, lương cơ bản) so với ngân sách tĩnh.
5. Đặt ngưỡng cảnh báo để không phải soi từng dòng
Có hàng trăm dòng thì không ai soi hết. Hãy đặt quy tắc kết hợp cả % và giá trị tuyệt đối, ví dụ: chỉ soi khi lệch > 10% VÀ > 20 triệu. Dùng riêng % thì khoản nhỏ lệch lớn gây nhiễu, dùng riêng số tiền thì bỏ sót.
Áp vào ví dụ: chi phí bán hàng (+30%, +60) bị bắt. Doanh thu (-7,5%, -150) lại lọt lưới vì chưa tới 10%. Với các dòng trọng yếu như doanh thu và lãi gộp, bạn nên đặt ngưỡng riêng hoặc dùng điều kiện HOẶC.
Hai cách phân loại cần làm thêm:
- Bất lợi / có lợi: chi phí cao hơn kế hoạch là bất lợi, doanh thu thấp hơn kế hoạch cũng bất lợi.
- Do thời điểm (timing) hay do bản chất: chi phí quảng cáo dời từ tháng 10 sang tháng 9 chỉ là timing, còn giá vận chuyển tăng là bản chất.
Công thức Excel (giả sử D = Ngân sách, E = Thực tế, F = Loại):
Chênh lệch (G): =E2-D2 Chênh lệch % (H): =IF(D2=0,"",G2/D2) Bất lợi/Có lợi: =IF(F2="Chi phí",IF(G2>0,"Bất lợi","Có lợi"),IF(G2<0,"Bất lợi","Có lợi")) Cần soi: =IF(AND(ABS(H2)>0.1,ABS(G2)>20),"SOI","") Tổng thực tế: =SUMIFS(Data!E:E,Data!A:A,"2025-09",Data!B:B,"Chi phí bán hàng") Map TK → mục: =XLOOKUP(A2,Mapping!A:A,Mapping!B:B,"CHƯA MAP")
Thêm định dạng có điều kiện: đỏ cho "Bất lợi" và "SOI", xanh cho "Có lợi". Bạn sẽ thấy ngay điểm cần xem.
6. Tự động hóa bằng Python (pandas)
Khi dữ liệu lớn hoặc phải làm hằng tháng, Python giúp bạn đọc sổ cái xuất từ phần mềm, ghép với ngân sách, tính lệch và lọc ngoại lệ trong vài giây.
import pandas as pd ns = pd.read_excel("ngan_sach.xlsx") # Kỳ, Khoản mục, Trung tâm CP, Ngân sách sc = pd.read_excel("so_cai.xlsx") # Kỳ, TK, Trung tâm CP, Số tiền (đã đổi ra triệu) mp = pd.read_excel("mapping_tk.xlsx") # TK, Khoản mục sc = sc.merge(mp, on="TK", how="left") print("TK chưa map:", sc.loc[sc["Khoản mục"].isna(), "TK"].unique()) key = ["Kỳ", "Khoản mục", "Trung tâm CP"] tt = (sc.groupby(key, as_index=False)["Số tiền"].sum() .rename(columns={"Số tiền": "Thực tế"})) df = ns.merge(tt, on=key, how="outer").fillna({"Ngân sách": 0, "Thực tế": 0}) df["Lệch"] = df["Thực tế"] - df["Ngân sách"] df["Lệch %"] = df["Lệch"] / df["Ngân sách"] # NS = 0 sẽ ra inf, vẫn bị bắt ngoai_le = df[(df["Lệch %"].abs() > 0.10) & (df["Lệch"].abs() > 20)] print(df.groupby("Khoản mục")["Thực tế"].sum()) # đối chiếu báo cáo gốc ngoai_le.to_excel("ngoai_le_thang_09.xlsx", index=False)
Đây là code minh họa, bạn cần chỉnh tên cột theo file của mình. Hai việc bắt buộc: kiểm tra danh sách TK chưa map và đối chiếu tổng từng khoản mục với báo cáo gốc trước khi gửi ai. Sau đó gửi file ngoại lệ cho trưởng bộ phận liên quan.
7. Dùng AI viết nhận xét chênh lệch: prompt mẫu
AI rất giỏi diễn đạt, nhưng không biết nguyên nhân thật trong doanh nghiệp bạn. Hãy dùng nó để soạn nháp, không để nó kết luận.
Prompt 1: tóm tắt top 5 khoản lệch
Bạn là trợ lý FP&A. Dưới đây là bảng ngoại lệ Budget vs Actual tháng 9
(đơn vị: triệu đồng, dữ liệu đã ẩn danh).
[dán bảng]
Hãy tóm tắt 5 khoản lệch lớn nhất: khoản mục, mức lệch tuyệt đối và %,
bất lợi hay có lợi. Chỉ dùng số trong bảng, không suy đoán nguyên nhân.
Prompt 2: gợi ý câu hỏi cho bộ phận
Với khoản "Chi phí bán hàng" vượt 30% so với kế hoạch, hãy liệt kê 8 câu hỏi
kế toán nên hỏi trưởng bộ phận Sales/Marketing để tìm nguyên nhân
(giá, số lượng, thời điểm ghi nhận, phát sinh ngoài kế hoạch...).
Chỉ đặt câu hỏi, không khẳng định nguyên nhân.
Prompt 3: soạn email yêu cầu giải trình
Soạn email ngắn, lịch sự, gửi trưởng bộ phận Bán hàng: nêu khoản mục vượt,
số liệu kế hoạch/thực tế, yêu cầu giải trình nguyên nhân, biện pháp
và dự báo các tháng còn lại, hạn phản hồi 3 ngày làm việc.
[dán số liệu đã ẩn danh]
Lưu ý bảo mật: trước khi đưa vào AI, hãy ẩn tên khách hàng, tên nhân sự, đơn giá và hợp đồng nhạy cảm. Chỉ đưa lượng dữ liệu tối thiểu cần thiết, và tuân thủ chính sách thông tin của công ty.
AI chỉ hỗ trợ diễn đạt. Kết luận và đề xuất phải do kế toán trưởng hoặc FP&A rà soát và duyệt.
8. Quy trình hằng tháng 5 bước và rolling forecast
- Chốt sổ (kể cả trích trước, phân bổ).
- Cập nhật số thực tế vào bảng dữ liệu.
- Chạy bảng chênh lệch (Excel hoặc Python), lọc ngoại lệ.
- Họp 30 phút với các bộ phận có khoản bị soi, ghi rõ nguyên nhân, người chịu trách nhiệm, hạn xử lý.
- Cập nhật dự báo các tháng còn lại (rolling forecast).
Ví dụ minh họa: Công ty X thấy chi phí bán hàng vượt 3 tháng liên tục. Thay vì giữ nguyên ngân sách cả năm, họ dự báo lại: nếu xu hướng này tiếp diễn thì lợi nhuận cả năm thấp hơn kế hoạch bao nhiêu, và cần cắt giảm hay điều chỉnh khoản nào. Ban lãnh đạo có số liệu để quyết định sớm, thay vì chờ đến cuối năm.
9. Checklist và 5 lỗi cần tránh
- Mapping sai khoản mục: luôn kiểm tra danh sách "CHƯA MAP".
- So sánh khác kỳ: tháng với tháng, lũy kế với lũy kế, không trộn.
- Bỏ qua bút toán trích trước: số thực tế thiếu sẽ làm chênh lệch ảo.
- Không ghi người chịu trách nhiệm: mỗi dòng bị soi cần một tên và một hạn.
- Không chỉnh ngân sách khi giả định đổi: ghi lại phiên bản ngân sách và lý do điều chỉnh.
Câu hỏi thường gặp
Chênh lệch ngân sách bao nhiêu thì cần giải trình? Không có con số chung. Nhiều doanh nghiệp kết hợp ngưỡng % và giá trị tuyệt đối (ví dụ > 10% và > 20 triệu như bài trên), rồi chỉnh theo quy mô và mức độ trọng yếu của từng khoản.
Nên dùng ngân sách tĩnh hay linh hoạt? Dùng cả hai tùy khoản. Khoản biến đổi theo doanh thu nên so với ngân sách linh hoạt, khoản cố định so với ngân sách tĩnh.
Không biết Python có làm được không? Được. Excel với SUMIFS, XLOOKUP và định dạng có điều kiện đã đủ cho phần lớn doanh nghiệp nhỏ. Python hữu ích khi dữ liệu nhiều hoặc phải lặp lại hằng tháng.
AI có thể tự giải thích nguyên nhân chênh lệch không? Không nên. AI không biết bối cảnh nội bộ, nên chỉ dùng để tóm tắt, gợi ý câu hỏi và soạn văn bản. Nguyên nhân phải xác nhận với bộ phận liên quan.
Có nên đưa số liệu thật vào ChatGPT hay công cụ AI khác không? Chỉ khi đã ẩn danh dữ liệu nhạy cảm và công ty cho phép. Cách an toàn là chỉ đưa bảng tổng hợp đã che tên khách hàng, nhân sự.
Kết luận
Ba ý chính cần nhớ:
- Bảng Budget vs Actual chỉ có giá trị khi map đúng khoản mục, nhìn đến từng dòng và so đúng loại ngân sách (tĩnh hay linh hoạt).
- Ngưỡng cảnh báo (cả % và số tiền) giúp bạn tập trung vào vài khoản thật sự đáng soi.
- Excel, Python và AI giúp bạn nhanh hơn, nhưng nguyên nhân, kết luận và đề xuất vẫn do con người xác nhận và chịu trách nhiệm.
Bạn có thể dựng file mẫu Excel Budget vs Actual theo đúng cấu trúc trong bài (số liệu Công ty X chỉ là minh họa) và thay bằng dữ liệu công ty mình. Muốn học tiếp cách ứng dụng Excel, Python và AI vào kế toán – tài chính theo hướng thực chiến, mời bạn tìm hiểu các khóa học và công cụ trên ecostartupai.com.
Còn bạn thì sao? Hãy bình luận bên dưới: khoản chi phí nào ở công ty bạn hay vượt ngân sách nhất, và bạn đang giải trình nó thế nào?
Bài viết liên quan

Dự Báo Dòng Tiền 13 Tuần Là Gì? Cách Lập Cho SME Từng Bước
Dự báo dòng tiền 13 tuần giúp SME biết trước tiền vào, tiền ra trong một quý để chủ động xoay vốn. Bài hướng dẫn cấu trúc bảng và ví dụ số nhỏ dễ làm.

NPV Và IRR Bằng Excel Và AI: SME Có Nên Mua Máy Mới Không?
Cách tính NPV và IRR bằng Excel để quyết định mua máy mới: dựng dòng tiền dự án, chọn tỷ lệ chiết khấu, kiểm tra bằng AI và tránh 4 lỗi hay gặp ở SME.

Báo Cáo Lưu Chuyển Tiền Tệ Bằng Excel Và AI: Lãi Mà Hết Tiền?
Lãi trên sổ nhưng két trống? Học cách lập báo cáo lưu chuyển tiền tệ gián tiếp bằng Excel, nhờ AI soát lỗi và chỉ ra chính xác tiền đang kẹt ở đâu. Kèm ví dụ.