Hướng dẫn

Mẫu Google Sheets Tách Đơn Sỉ và Lẻ Tự Động Tính Giá 2026

Tuân HoangTuân Hoang
31 tháng 8, 2026
9 phút đọc
Ảnh minh họa bài viết: Mẫu Google Sheets Tách Đơn Sỉ và Lẻ Tự Động Tính Giá 2026

Tại sao đơn sỉ và đơn lẻ trộn chung một bảng lại thành thảm họa cuối tháng

Chị chủ shop quần áo ở Ninh Hiệp nhắn tin lúc 11 giờ đêm: "Em ơi bảng tính chị sai giá tùm lum, khách sỉ lấy 50 cái áo mà hệ thống tính giá lẻ, mất toi 2 triệu." Đây là tình huống lặp lại gần như tuần nào cũng có ở những shop vừa bán lẻ tại cửa hàng vừa đổ sỉ cho các mối buôn khác — một dòng đơn hàng, một cột đơn giá, và người nhập liệu phải tự nhớ "à khách này là sỉ, phải nhân giá thấp hơn."

Vấn đề không nằm ở chỗ không biết giá sỉ bao nhiêu, giá lẻ bao nhiêu — chủ shop nào cũng thuộc lòng. Vấn đề là bảng tính không có cơ chế nào tự phân biệt hai loại khách để áp giá đúng, nên mọi thứ phụ thuộc vào trí nhớ và sự tỉnh táo của người gõ số vào lúc 10 giờ đêm sau một ngày đóng gói hàng mệt nhoài. Với shop bán 30-40 đơn/ngày trở lên, xác suất gõ nhầm giá tăng theo cấp số nhân, và mỗi lần nhầm là mất lãi thật, không phải lý thuyết.

Xác định ranh giới sỉ - lẻ trước khi dựng công thức

Trước khi mở Google Sheets ra gõ hàm, cần trả lời một câu hỏi tưởng đơn giản nhưng nhiều shop bỏ qua: ranh giới giữa sỉ và lẻ của bạn nằm ở đâu? Có ba cách phổ biến:

  • Theo số lượng mua trong một đơn: ví dụ từ 10 sản phẩm cùng loại trở lên tính giá sỉ, dưới đó tính giá lẻ. Đây là cách dễ tự động hóa nhất vì máy tự đếm được.
  • Theo nhóm khách hàng cố định: một khách đã được gắn nhãn "đại lý" hay "mối sỉ" thì mọi đơn của họ đều tính giá sỉ, bất kể mua 1 cái hay 100 cái. Cách này phù hợp với shop có mối quen lâu năm, mua rải rác nhưng tổng doanh số lớn.
  • Kết hợp cả hai: khách lẻ vãng lai mua đủ số lượng ngưỡng cũng được hưởng giá sỉ, còn khách đã là đại lý thì mặc định giá sỉ dù mua ít.

Một xưởng may gia công ở Hóc Môn mà tôi từng xem bảng tính của họ chọn sai mô hình ngay từ đầu: họ áp ngưỡng số lượng cho tất cả khách, kể cả các đại lý quen mua rải theo tuần (mỗi lần chỉ 5-7 cái nhưng cộng dồn cả tháng hơn 200 cái). Kết quả là đại lý luôn bị tính giá lẻ dù họ xứng đáng giá sỉ, dẫn đến khiếu nại và mất một khách hàng lớn. Bài học rút ra: mô hình giá phải khớp với cách khách hàng thực sự mua, không phải cách bảng tính dễ tính toán nhất.

Dựng cấu trúc bảng: tách cột loại khách và bảng giá riêng

Cấu trúc tối thiểu cần ba thành phần tách biệt trong cùng file Google Sheets:

  • Sheet "Bảng giá" — liệt kê mã sản phẩm, giá lẻ, giá sỉ, và ngưỡng số lượng áp giá sỉ (nếu dùng mô hình theo số lượng).
  • Sheet "Danh sách khách" — mã khách, tên khách, loại khách (sỉ/lẻ), nếu dùng mô hình theo nhóm khách hàng cố định.
  • Sheet "Đơn hàng" — nơi nhập đơn hàng thực tế, có cột số lượng, mã khách hoặc loại khách, và cột đơn giá tự tính bằng công thức.

Việc tách bảng giá ra riêng thay vì gõ số trực tiếp vào công thức là điểm khác biệt giữa một bảng tính "dùng được vài tuần" và một bảng tính "dùng cả năm không phải sửa lại". Khi Tết đến, giá sỉ tăng 5%, bạn chỉ sửa một ô trong sheet Bảng giá, toàn bộ công thức trong sheet Đơn hàng tự cập nhật theo — không phải dò từng dòng công thức để sửa số cứng.

Công thức tự động tính giá theo số lượng đặt hàng

Với mô hình theo ngưỡng số lượng, công thức cốt lõi dùng IF kết hợp VLOOKUP để vừa tra giá vừa so sánh ngưỡng. Giả sử sheet Bảng giá có cột A là mã sản phẩm, cột B là giá lẻ, cột C là giá sỉ, cột D là ngưỡng số lượng sỉ (ví dụ 10). Trong sheet Đơn hàng, cột số lượng ở E, mã sản phẩm ở B, công thức đơn giá ở cột F sẽ là:

=IF(E2>=VLOOKUP(B2,'Bảng giá'!A:D,4,0), VLOOKUP(B2,'Bảng giá'!A:D,3,0), VLOOKUP(B2,'Bảng giá'!A:D,2,0))

Công thức này đọc là: nếu số lượng đặt (E2) lớn hơn hoặc bằng ngưỡng sỉ tra được từ Bảng giá, lấy giá sỉ (cột 3); ngược lại lấy giá lẻ (cột 2). Cột thành tiền chỉ cần nhân đơn giá với số lượng như bình thường.

Với mô hình theo nhóm khách hàng cố định, công thức đơn giản hơn vì không cần so sánh số lượng, chỉ cần tra loại khách rồi rẽ nhánh:

=IF(VLOOKUP(C2,'Danh sách khách'!A:C,3,0)="Sỉ", VLOOKUP(B2,'Bảng giá'!A:C,3,0), VLOOKUP(B2,'Bảng giá'!A:C,2,0))

Trong đó C2 là mã khách hàng ở sheet Đơn hàng, và cột 3 trong Danh sách khách là nơi lưu loại khách sỉ/lẻ. Một cửa hàng bán mỹ phẩm ở quận 7 áp dụng công thức này và giảm thời gian chốt đơn từ 3 phút/đơn (phải tự nhớ áp giá) xuống còn 30 giây, vì nhân viên chỉ cần gõ mã khách và số lượng, giá tự nhảy ra.

Xử lý trường hợp hỗn hợp: một đơn có cả sản phẩm sỉ và lẻ

Đây là phần hầu hết bảng tính mẫu trên mạng bỏ qua nhưng thực tế lại xảy ra thường xuyên: một khách sỉ đặt 50 áo thun (đủ ngưỡng sỉ) nhưng chỉ đặt 3 cái quần short (chưa đủ ngưỡng). Nếu công thức áp giá theo cả đơn hàng thay vì theo từng dòng sản phẩm, bạn sẽ tính sai một trong hai loại.

Cách xử lý đúng là để mỗi dòng trong sheet Đơn hàng đại diện cho một sản phẩm, không phải một đơn hàng. Một đơn có 5 sản phẩm thì tách thành 5 dòng, mỗi dòng tự tính giá theo số lượng riêng của sản phẩm đó, sau đó dùng SUMIF theo mã đơn hàng để cộng tổng tiền cho cả đơn:

=SUMIF('Đơn hàng'!A:A, "DH001", 'Đơn hàng'!G:G)

Với A là cột mã đơn hàng, G là cột thành tiền của từng dòng sản phẩm. Cách tách dòng này ban đầu nhìn có vẻ rườm rà hơn, nhưng nó tránh được sai số hoàn toàn khi khách mua hỗn hợp — điều mà công thức tính theo tổng đơn không bao giờ xử lý chính xác được.

Chốt công nợ và đối soát cuối kỳ theo từng loại khách

Khách sỉ thường không trả tiền ngay mà công nợ theo kỳ (7 ngày, 15 ngày, hoặc cuối tháng), trong khi khách lẻ hầu như thanh toán ngay khi nhận hàng. Nếu trộn chung một cột "đã thu" cho cả hai loại khách, cuối tháng đối soát công nợ sẽ mất nhiều thời gian dò lại từng dòng xem cái nào đã thu, cái nào chưa.

Giải pháp là thêm cột "Hạn thanh toán" tính tự động bằng DATE cộng số ngày công nợ theo loại khách, và dùng COUNTIFS/SUMIFS lọc riêng công nợ sỉ quá hạn:

=SUMIFS('Đơn hàng'!G:G, 'Đơn hàng'!H:H, "Chưa thu", 'Đơn hàng'!I:I, "<"&TODAY(), 'Đơn hàng'!C:C, "Sỉ")

Công thức này cộng tổng tiền các đơn sỉ chưa thu và đã quá hạn thanh toán, giúp chủ shop biết ngay cần gọi điện nhắc nợ ai trước khi mất kiểm soát dòng tiền. Với các shop có kho hàng lớn cần theo dõi song song tồn kho khi xử lý đơn sỉ số lượng lớn, có thể tham khảo thêm mẫu quản lý kho xuất nhập tồn tự động để không bị âm hàng khi đơn sỉ đổ về dồn dập.

Khi nào tự dựng bảng, khi nào nên dùng mẫu có sẵn

Nếu shop bạn chỉ bán một vài dòng sản phẩm, số lượng đơn dưới 20/ngày, tự dựng bảng theo hướng dẫn trên là đủ và tiết kiệm chi phí. Nhưng khi số lượng sản phẩm lên đến hàng trăm mã, nhiều mức giá sỉ theo bậc (sỉ 1: 10-50 cái, sỉ 2: trên 50 cái, mỗi bậc một giá khác), công thức IF lồng nhau sẽ trở nên khó bảo trì và dễ lỗi khi có người khác vào sửa.

Đây là lúc dùng một mẫu dựng sẵn với hệ thống bậc giá tự động và cảnh báo lỗi nhập liệu hợp lý hơn tự mò từng công thức — bên SheetStore có mẫu quản lý đơn sỉ-lẻ đã xử lý sẵn các trường hợp hỗn hợp và bậc giá nhiều tầng, phù hợp cho shop đang mở rộng quy mô mà không muốn dành cả buổi tối debug công thức. Việc quản lý tài chính tổng thể sau khi tách được doanh thu sỉ và lẻ rõ ràng cũng dễ hơn nhiều, có thể kết hợp thêm với mẫu quản lý ngân sách hàng tháng để theo dõi dòng tiền theo từng kênh bán.

Lỗi thường gặp khiến bảng tính sỉ-lẻ chạy sai sau vài tuần

Ba lỗi lặp lại nhiều nhất khi các shop tự dựng bảng loại này: dùng địa chỉ ô tương đối trong VLOOKUP khi kéo công thức xuống nhiều dòng (dẫn đến việc vùng tra cứu bị xê dịch, phải khóa bằng dấu $ như 'Bảng giá'!$A$1:$D$100); quên xử lý trường hợp mã sản phẩm gõ sai chính tả khiến VLOOKUP trả về lỗi #N/A thay vì báo rõ "sản phẩm không tồn tại"; và để ngưỡng số lượng sỉ nằm rải rác ở nhiều sheet khác nhau thay vì tập trung một chỗ, dẫn đến tình trạng sửa chỗ này quên chỗ kia.

Với lỗi #N/A, bọc thêm IFERROR quanh công thức chính giúp bảng báo lỗi rõ ràng thay vì hiển thị ký tự khó hiểu: =IFERROR(VLOOKUP(...), "Kiểm tra lại mã SP"). Chi tiết nhỏ này tiết kiệm rất nhiều thời gian debug khi nhân viên bán hàng gõ nhầm mã lúc đang tất bật chốt đơn cuối ngày.

Câu hỏi thường gặp

Làm sao để một đơn hàng tự động áp đúng giá sỉ hoặc giá lẻ mà không cần chọn tay?

Dùng cột phân loại khách hàng (sỉ/lẻ) kết hợp hàm IF hoặc VLOOKUP tra bảng giá riêng theo loại khách. Có thể thêm điều kiện số lượng tối thiểu để tự chuyển sang giá sỉ khi khách mua đủ số lượng quy định.

Nếu một khách vừa mua sỉ vừa mua lẻ trong cùng tháng thì theo dõi thế nào?

Tạo cột mã đơn hàng riêng cho từng lần đặt, không gộp theo khách. Dùng Pivot Table lọc theo mã khách để xem tổng hai loại đơn tách biệt, tránh cộng nhầm doanh thu sỉ vào lẻ.

Bảng giá sỉ theo bậc số lượng (mua càng nhiều giá càng giảm) có làm được trên Sheets không?

Được, dùng hàm VLOOKUP với tham số dò gần đúng (TRUE) trên bảng bậc giá đã sắp xếp tăng dần theo số lượng. Sheets tự chọn mức giá phù hợp với số lượng khách đặt mà không cần công thức lồng phức tạp.

Template này có tính được lãi khác nhau giữa đơn sỉ và đơn lẻ không?

Có, thêm cột giá vốn cố định rồi trừ giá bán theo từng loại đơn để ra lợi nhuận riêng cho sỉ và lẻ. Từ đó lập báo cáo so sánh biên lợi nhuận hai kênh trên cùng một trang tổng hợp.

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