2026-08-21 · Ứng dụng ngành
Cuối tháng, kế toán kho gửi ra báo cáo nhập - xuất - tồn. Hai trăm mấy chục dòng, cột Tồn đầu, Nhập, Xuất, Tồn cuối, Đơn giá, Giá trị tồn. Số liệu chính xác tuyệt đối. Sếp mở ra, kéo xuống một lượt, gật đầu, rồi đóng lại.
Không phải vì báo cáo sai. Vì nó trả lời câu hỏi "còn bao nhiêu", trong khi người đọc cần trả lời hai câu khác: mặt hàng nào sắp hết mà chưa ai đặt, và tiền đang bị chôn ở những mặt hàng nào. Cả hai câu đó đều nằm trong chính bộ dữ liệu ấy, chỉ là chưa được tính ra.
Bài này đi qua bốn tín hiệu cần có trong một báo cáo tồn kho dùng được để ra quyết định, công thức tính từng cái, và những cái bẫy khiến số tính ra trông đúng mà sai.
Báo cáo hiện tại đang trả lời sai câu hỏi
Bảng nhập - xuất - tồn tiêu chuẩn là một bảng cân đối: tồn đầu cộng nhập trừ xuất bằng tồn cuối. Nó đúng về kế toán và bắt buộc phải có. Nhưng nó là ảnh chụp một thời điểm, và mọi dòng đều bình đẳng — mặt hàng bán chạy nhất nằm cạnh mặt hàng hai năm chưa ai hỏi, cùng cỡ chữ, cùng màu.
Người ra quyết định phải tự làm phần còn lại trong đầu: nhìn con số tồn cuối rồi ước xem nó đủ bán bao lâu. Với hai chục mã hàng thì làm được. Với hai trăm mã thì không ai làm, nên báo cáo bị đóng lại.
Phần thiếu không phải dữ liệu. Cột Xuất trong kỳ đã có sẵn, và đó là tử số của mọi tín hiệu bên dưới.
Bốn tín hiệu cần có
Tín hiệu 1 — Đã hết hàng. Tồn cuối bằng 0. Dễ tính nhất và cũng ít giá trị nhất, vì lúc báo cáo lên bảng thì việc đã xảy ra rồi. Vẫn phải có, nhưng để nó đứng một mình là báo cáo chỉ biết đưa tin buồn.
Tín hiệu 2 — Số ngày bán còn lại. Đây là tín hiệu quan trọng nhất và là cái duy nhất nhìn về phía trước:
Số ngày bán còn lại = Tồn cuối ÷ (Tổng xuất trong kỳ ÷ Số ngày của kỳ)
Một mã còn tồn 39 cái, xuất 92 cái trong tháng 30 ngày, tức bình quân hơn 3 cái mỗi ngày, thì còn khoảng 12 ngày hàng. Nếu thời gian đặt hàng về tới kho là 14 ngày, mã này phải đặt ngay hôm nay — dù cột Tồn cuối vẫn hiện con số 39 trông rất yên tâm. Ngưỡng cảnh báo nên đặt theo thời gian giao hàng thực tế của từng nhóm nhà cung cấp, không đặt một con số chung cho cả kho.
Tín hiệu 3 — Hàng chậm. Tồn cuối lớn hơn lượng xuất của N tháng gần nhất. Mức N tùy ngành: hàng tiêu dùng nhanh lấy 2 tháng, thiết bị và phụ tùng có thể lấy 6 tháng. Hàng chậm chưa phải hàng chết, nhưng đây là nhóm nên ngừng nhập thêm trước khi nó thành hàng chết.
Tín hiệu 4 — Hàng chết. Không phát sinh xuất trong X ngày liên tục. Đây là nhóm ăn tiền nhiều nhất mà im lặng nhất: nó không gây ra sự cố nào, không ai phàn nàn, chỉ nằm đó và chiếm chỗ. Với hàng chết, cột đáng nhìn không phải số lượng mà là giá trị tồn — mười mã hàng chết có thể chỉ chiếm vài phần trăm số dòng nhưng gánh một khoản tiền đáng kể.
Bốn cái bẫy khi tính
Bẫy 1 — Hàng mới nhập bị gắn nhãn hàng chết. Một mã nhập về ngày 28 thì tới ngày 30 chốt sổ đương nhiên chưa xuất cái nào. Nếu quy tắc chỉ là "xuất bằng 0 trong kỳ thì là hàng chết", nó lọt thẳng vào danh sách hàng chết cùng với mã đã nằm im hai năm. Cách xử lý: thêm điều kiện loại trừ theo ngày nhập gần nhất — mã nào mới nhập trong vòng X ngày thì tách sang nhóm "hàng mới, chưa đủ dữ liệu" thay vì dồn vào nhóm hàng chết. Nhóm này phải hiện ra thành một nhóm riêng, đừng ẩn đi: ẩn đi thì tổng số mã không cân, và người đọc tự cộng lại sẽ thấy thiếu.
Bẫy 2 — Chia cho 0. Mã chưa từng xuất thì mẫu số bằng 0, và số ngày bán còn lại ra vô cực hoặc ra lỗi. Trong Power BI dùng DIVIDE() thay cho dấu chia, và tham số thứ ba trả về một nhãn rõ ràng thay vì để trống. Ô trống trong bảng bị đọc thành "không có vấn đề", trong khi thực tế đó là ca nặng nhất — mã chưa bao giờ bán được cái nào. Đây là kiểu lỗi mà ngưỡng cảnh báo dạng khoảng cũng bỏ sót: điều kiện "cảnh báo khi số ngày còn lại nhỏ hơn 14" không bắt được giá trị vô cực, mà giá trị vô cực mới là thứ đáng báo nhất.
Bẫy 3 — Trộn ảnh chụp với sự kiện. Tồn cuối là số dư tại một thời điểm; Xuất là tổng phát sinh của cả kỳ. Hai đại lượng này không cùng bản chất, nên đừng lấy cái này chia cái kia rồi gọi là tỉ lệ phần trăm. Chia được và ra số, nhưng số đó không đọc được thành câu tiếng Việt nào có nghĩa. Cụ thể: "tỉ lệ hàng chết" phải tính trên tổng số mã hàng đang theo dõi hoặc trên tổng giá trị tồn — hai mẫu số thật sự bao chứa tử số — chứ không tính trên lượng xuất trong kỳ.
Bẫy 4 — Mã hàng không chuẩn làm gãy phép ghép. Khi ghép báo cáo tồn kho với biên bản kiểm kê hoặc với dữ liệu bán hàng, mã hàng là khóa. Chỉ cần một dòng gõ SP-500 trong khi hệ thống dùng SP500, hoặc một mã dính khoảng trắng cuối, là dòng đó rơi ra ngoài. Không có thông báo lỗi nào, bảng vẫn chạy, chỉ thiếu vài dòng. Chuẩn hóa mã bằng Text.Trim và Text.Upper ở cả hai nguồn trước khi ghép, rồi đếm số dòng trước và sau khi ghép xem có khớp không.
Đối chiếu sổ với kiểm kê: bước không bỏ được
Mọi tín hiệu ở trên đều dựa trên cột Tồn cuối trong sổ. Nếu sổ lệch với thực tế trong kho thì cảnh báo tính ra chính xác về mặt số học nhưng sai về mặt sự thật. Nên trước khi dựng cảnh báo, ghép báo cáo tồn kho với biên bản kiểm kê bằng Merge kiểu Full Outer, và kết quả sẽ tách thành ba nhóm:
- Có trong sổ, không có trong biên bản kiểm kê. Có thể tổ kiểm kê bỏ sót, có thể hàng đã xuất mà chưa ghi sổ, cũng có thể mất hàng.
- Có trong biên bản, không có trong sổ. Thường là hàng mới nhận chưa kịp lên sổ. Cột ghi chú của biên bản kiểm kê hay ghi thẳng chuyện này — nhớ giữ cột đó lại khi nạp dữ liệu, đừng lọc bỏ vì thấy phần lớn ô trống.
- Có cả hai, lệch số lượng. Nhóm phải giải trình từng dòng. Lệch vài đơn vị thường là nhầm khi đếm hoặc nhầm đơn vị tính; lệch nhiều là có vấn đề về quy trình xuất nhập.
Khung ghép hai nguồn ở đây giống hệt khung dùng cho đối chiếu công nợ và đối chiếu hóa đơn đầu vào — học một lần rồi áp cho mọi bài toán so hai bảng.
Dựng bằng Excel hay Power BI
Cả hai đều làm được. Việc chọn phụ thuộc vào ba yếu tố chứ không phải vào công cụ nào hiện đại hơn:
| Tình huống | Excel + Power Query | Power BI |
|---|---|---|
| Một kho, chạy tay mỗi tháng | Đủ dùng, dựng nhanh hơn | Hơi thừa |
| Nhiều kho, nhiều chi nhánh | Nặng dần, dễ vỡ | Phù hợp |
| Cần xem xu hướng theo tháng | Phải tự gom file từng kỳ | Có sẵn, chỉ cần bảng lịch |
| Nhiều người cùng xem, phân quyền | Gửi file qua lại | Phù hợp |
| Muốn nhận cảnh báo tự động | Không có | Đặt cảnh báo trên báo cáo |
Điểm chung của cả hai đường: phần biến đổi dữ liệu viết bằng Power Query, giống nhau tới từng bước. Nên nếu đang phân vân, dựng bằng Excel trước, đến khi cần chuyển sang Power BI thì phần đã làm mang sang được nguyên vẹn. Lý do chi tiết nằm ở bài vì sao nên học Power Query trước Power BI.
Các bạn có thể xem trước hai báo cáo mẫu về kho của đội ngũ EzTech để hình dung bố cục: Hàng tồn kho và Nhập xuất tồn, đều mở lên xem trực tiếp được.
Câu hỏi thường gặp
Bao nhiêu ngày không xuất thì gọi là hàng chết?
Không có con số chung. Cách chọn ngưỡng thực tế: lấy chu kỳ đặt hàng bình thường của nhóm hàng đó nhân đôi, rồi kiểm lại bằng mắt — chạy thử ngưỡng đó trên dữ liệu năm ngoái, mở danh sách kết quả ra xem có đúng là những mã mà thủ kho cũng gật đầu là hàng chết không. Ngưỡng nào cho ra danh sách quá dài thì không ai xử lý, quá ngắn thì bỏ sót.
Dữ liệu chỉ có tồn cuối tháng, không có phát sinh từng ngày thì tính được không?
Tính được tín hiệu 1, 3, 4 và tính gần đúng tín hiệu 2 bằng cách lấy xuất cả tháng chia đều cho số ngày. Chỗ mất chính xác là hàng có tính mùa vụ hoặc bán theo lô lớn — bình quân hóa sẽ che mất chuyện cả tháng chỉ xuất đúng hai lần. Nếu lấy được dữ liệu xuất theo từng chứng từ thì nên lấy, còn không thì vẫn dùng được, chỉ cần biết là số ngày còn lại là ước lượng.
Có nên đưa cả bốn tín hiệu lên một trang không?
Nên, nhưng chia thành hai khối rõ ràng: khối rủi ro thiếu hàng và khối tiền bị chôn. Hai khối này dành cho hai hành động khác nhau — một bên là đặt hàng, một bên là xả hàng — và thường do hai người khác nhau xử lý. Trộn chung một bảng dài thì cả hai đều phải lọc.
Cảnh báo nên gửi bằng gì?
Bắt đầu bằng cách đơn giản nhất: một trang báo cáo mở ra là thấy, chốt lịch xem vào một buổi cố định trong tuần. Cơ chế gửi thư tự động chỉ có ích khi danh sách cảnh báo đã đủ ngắn và đủ đúng — gửi một danh sách dài mỗi ngày thì sau hai tuần không ai mở nữa, và lúc có cảnh báo thật cũng không ai đọc.
Cùng một dữ liệu, khác cách hỏi
Điểm đáng chú ý của cả bài này là không cần thu thập thêm dữ liệu nào. Cột Tồn cuối và cột Xuất đã nằm sẵn trong báo cáo mà kế toán kho vẫn làm mỗi tháng. Thứ thêm vào chỉ là vài phép chia và vài điều kiện phân loại — nhưng nó đổi báo cáo từ chỗ ghi lại chuyện đã xảy ra sang chỗ chỉ ra việc cần làm.
Nếu các bạn muốn dựng bộ báo cáo kho theo hướng này cho doanh nghiệp mình, khóa DATA BUSINESS của đội ngũ EzTech đi từ dữ liệu thô tới báo cáo quản trị hoàn chỉnh trên Power BI. Còn nếu muốn có sẵn một hệ thống chạy trên dữ liệu thật thay vì tự dựng, các bạn xem dịch vụ giải pháp dữ liệu hoặc liên hệ với EzTech để trao đổi cụ thể.