2026-09-16 · Ứng dụng ngành
Phân tích RFM là cách chia khách hàng thành nhóm dựa trên ba con số có sẵn trong mọi bảng bán hàng: lần gần nhất khách mua là bao lâu trước, khách mua bao nhiêu lần, và khách chi bao nhiêu. Không cần dữ liệu hành vi web, không cần phần mềm CRM riêng.
Cách tính nhìn thì đơn giản. Phần hay bị bỏ qua là ở giữa quy trình có ba quyết định mà hầu hết hướng dẫn lướt qua trong một dòng. Mỗi quyết định đổi một chút, cả bảng phân khúc đổi theo, và không có ô nào báo lỗi.
Bài này đi qua cách dựng phân tích RFM bằng Power Query, rồi đo trên một bộ dữ liệu thật xem ba quyết định đó làm bảng phân khúc thay đổi đến mức nào.
Phân tích RFM là gì?
RFM là viết tắt của ba chỉ số, tính cho từng khách hàng:
- R (Recency), độ gần đây: số ngày từ lần mua gần nhất đến mốc tính. Càng nhỏ càng tốt.
- F (Frequency), tần suất: số lần mua trong kỳ phân tích.
- M (Monetary), giá trị: số tiền khách chi trong kỳ.
Mỗi chỉ số được quy về thang điểm 1 đến 5. Ghép ba điểm lại thành một mã ba chữ số, ví dụ 555 là khách vừa mua gần đây, mua nhiều lần và chi nhiều. Cuối cùng, một bảng tra gán mỗi mã vào một nhóm có tên: Champions, Loyal, At Risk, Lost customers…
Dữ liệu cần tối thiểu ba cột: ngày bán, mã khách hàng, doanh số. Mỗi dòng là một giao dịch.
Bộ dữ liệu dùng để đo
Đội ngũ EzTech dùng một bộ dữ liệu mẫu trong lớp phân tích dữ liệu: 3.043 giao dịch của 999 khách hàng trong năm 2024. Mỗi khách mua từ 1 đến 5 lần, 200 khách chỉ mua đúng một lần. Nhóm 20% khách chi nhiều nhất chiếm 41,5% doanh số.
File đi kèm sẵn một cách tính RFM hoàn chỉnh bằng công thức Excel, cùng bảng tra 125 mã về 11 phân khúc. Chúng ta sẽ đọc lại cách tính đó, rồi đổi từng quyết định để xem chuyện gì xảy ra.
Quyết định 1: mốc tính R là ngày nào?
R là số ngày từ lần mua gần nhất tới một mốc. File mẫu đặt mốc cố định là ngày 01/01/2025, ngay sau giao dịch cuối cùng trong dữ liệu. Với mốc này, trung vị R là 81 ngày.
Nếu thay mốc bằng hàm TODAY, R của mọi khách tăng thêm đúng số ngày trôi qua kể từ đó. Mở file sau ba tháng, cả bảng dồn xuống nhóm "lâu không mua", dù dữ liệu không đổi một dòng nào.
Quy tắc an toàn: mốc tính R là ngày sau giao dịch cuối cùng của kỳ phân tích, không phải ngày mở file. Muốn theo dõi theo thời gian thì chốt mỗi kỳ một mốc và lưu kết quả lại.
Quyết định 2: chia điểm theo khoảng đều hay theo số khách đều?
Có hai cách quy một chỉ số về thang 1 đến 5, và hai cách này cho kết quả rất khác nhau.
Cách 1: chia khoảng giá trị đều nhau
File mẫu dùng cách này cho R: mỗi bậc rộng 72 ngày (dưới 72 ngày là 5 điểm, từ 72 đến dưới 145 là 4 điểm…). Kết quả là 454 khách, tức 45,4%, cùng nhận 5 điểm R, trong khi mức 1 điểm chỉ có 51 khách.
Điều này không sai. Nó phản ánh đúng việc gần một nửa số khách có lần mua gần nhất rơi vào 71 ngày cuối năm. Nhưng điểm R lúc đó phân biệt kém ở phía trên: gần một nửa danh sách có cùng một điểm.
Cách 2: chia theo số khách đều nhau
Xếp khách theo giá trị rồi cắt thành năm nhóm bằng nhau, mỗi nhóm khoảng 200 khách. Cách này phân biệt đều hơn, nhưng gặp vấn đề ngay khi chỉ số có ít giá trị.
F trong bộ dữ liệu này chỉ có năm giá trị: mua 1, 2, 3, 4 hoặc 5 lần. Cắt 999 khách thành năm nhóm 200 người thì 213 khách cùng mua đúng 3 lần bị tách làm hai: 24 người nhận 2 điểm, 189 người nhận 3 điểm. Ai rơi vào nhóm nào chỉ phụ thuộc thứ tự dòng khi sắp xếp. Hai khách giống hệt nhau về hành vi lại nằm ở hai phân khúc khác nhau.
File mẫu tránh được lỗi này vì dùng thẳng số lần mua làm điểm F. Cách đó chỉ đúng khi F không vượt quá 5. Dữ liệu của bạn có khách mua vài chục lần thì phải đặt ngưỡng tay, ví dụ 1 lần, 2 lần, 3 đến 5 lần, 6 đến 10 lần, trên 10 lần.
Quy tắc: chỉ số có nhiều giá trị khác nhau thì chia theo số khách, chỉ số có ít giá trị thì đặt ngưỡng tay, và không bao giờ để hai khách cùng giá trị nhận hai điểm khác nhau.
Quyết định 3: M là tổng chi tiêu hay giá trị trung bình mỗi đơn?
Đây là quyết định làm thay đổi bảng nhiều nhất.
File mẫu tính M bằng doanh thu chia số lần mua, tức giá trị trung bình mỗi đơn. Định nghĩa gốc của RFM là tổng tiền khách chi trong kỳ.
Giữ nguyên mọi thứ khác, chỉ đổi M từ trung bình sang tổng, rồi chia điểm theo đúng kiểu khoảng đều như file đang làm. Kết quả:
| Phân khúc | M = trung bình mỗi đơn | M = tổng chi tiêu |
|---|---|---|
| Champions | 112 khách | 127 khách |
| New Customers | 70 khách | 169 khách |
| Promising | 144 khách | 67 khách |
| Need Attention | 76 khách | 32 khách |
| Cannot Lose Them | 38 khách | 0 khách |
Tổng cộng 283 trên 999 khách, tức 28,3%, đổi sang phân khúc khác. Không có dòng dữ liệu nào đổi.
Dòng đáng chú ý nhất là nhóm Cannot Lose Them. Bảng tra trong file mô tả nhóm này là "VIP cũ, mua nhiều nhưng lâu không quay lại", kèm hành động "gọi lại, tặng ưu đãi lớn". Soi 38 khách trong nhóm thì cả 38 người đều chỉ mua đúng một lần, và lần mua đó cách mốc tính hơn bảy tháng.
Có hai lý do cộng lại. Thứ nhất, khi M là trung bình mỗi đơn, khách chỉ có một đơn lớn nhận điểm M cao ngang khách mua năm lần. Thứ hai, bảng tra xếp các mã 113, 114, 115, 214, 215 (R thấp, F bằng 1, M từ 3 điểm trở lên) vào nhóm "mua nhiều", tức chính bảng tra cũng mâu thuẫn với mô tả của nó. Nếu đội bán hàng cầm danh sách này đi gọi với kịch bản "khách VIP lâu năm", họ sẽ gọi cho 38 người chỉ mua một lần.
Quy tắc: M dùng tổng chi tiêu trong kỳ. Giá trị trung bình mỗi đơn là một chỉ số hữu ích, nhưng nên để thành cột riêng để xem thêm, không đưa vào mã RFM.
Dựng phân tích RFM bằng Power Query
- Nạp bảng giao dịch. Lọc bỏ đơn hủy và đơn trả, ép kiểu cột ngày bằng Using Locale nếu dữ liệu xuất từ phần mềm, xem bài sửa lỗi ngày tháng trong Power Query.
- Group By theo mã khách hàng với ba phép gộp: Max của cột ngày (ngày mua gần nhất), Count Rows (F), Sum của cột doanh số (M).
- Thêm cột R = mốc tính trừ ngày mua gần nhất, đổi ra số ngày. Mốc tính đặt trong một bảng tham số riêng, đừng gõ cứng trong công thức.
- Chấm điểm. Với chỉ số chia theo ngưỡng tay, dựng một bảng ngưỡng rồi dùng cột điều kiện. Với chỉ số chia theo số khách, xếp hạng rồi chia năm nhóm, và kiểm tra lại rằng khách cùng giá trị nhận cùng điểm.
- Ghép mã = R × 100 + F × 10 + M.
- Merge với bảng tra phân khúc theo mã, kiểu Left Outer. Sau đó lọc các dòng không tra ra phân khúc: số dòng đó phải bằng 0.
Bảng tra nên có đúng một mã trên một dòng, không gom nhiều mã vào một ô cách nhau bằng dấu phẩy. Trong chính file mẫu, bảng mô tả nhóm có một ô ghi "422, 421 412" thiếu một dấu phẩy. Tách chuỗi theo dấu phẩy sẽ ra một mã "421 412" không bao giờ khớp. File vẫn chạy đúng vì phần tra thật dùng một bảng khác, mỗi mã một dòng.
Ba phép kiểm trước khi gửi danh sách phân khúc
- Đếm khách theo từng điểm R, F, M. Một mức điểm chứa gần một nửa số khách là dấu hiệu cách chia đang phân biệt kém.
- Lấy vài khách trong mỗi phân khúc, đọc lại lịch sử mua của họ. Nếu mô tả nhóm là "mua nhiều" mà khách chỉ có một đơn, bảng tra hoặc định nghĩa M đang sai.
- Kiểm tra khách cùng số lần mua có cùng điểm F không. Không cùng thì cách chia theo thứ hạng đang cắt ngang một nhóm.
Câu hỏi thường gặp
Cần bao nhiêu khách thì phân tích RFM mới có nghĩa?
Đủ để mỗi phân khúc có vài chục khách trở lên. Với vài chục khách, chia năm mức cho ba chỉ số sẽ ra 125 mã mà phần lớn trống. Bài Customer Dashboard có bốn phép đếm để kiểm tra dữ liệu có đủ trước khi dựng.
Doanh nghiệp B2B có dùng RFM được không?
Được, nhưng thường chỉ vài chục đến vài trăm khách và mỗi khách mua rất đều. Khi đó nên theo dõi từng khách thay vì chia nhóm, và R nên so với nhịp mua riêng của từng khách thay vì một ngưỡng chung.
Bao lâu nên chạy lại phân tích RFM?
Theo nhịp ra quyết định của bộ phận bán hàng, thường là mỗi tháng hoặc mỗi quý. Quan trọng hơn tần suất là giữ cố định cách chấm điểm giữa các kỳ, để khách đổi phân khúc là vì hành vi thay đổi chứ không phải vì công thức thay đổi.
Làm trên Excel hay Power BI?
Power Query trong Excel làm được trọn quy trình ở trên. Power BI phù hợp khi muốn xem phân khúc theo khu vực, nhân viên phụ trách hay nhóm hàng. Hai mẫu phân tích doanh số theo sản phẩm và khách hàng và theo dõi mua bán của khách hàng trong kho báo cáo của EzTech mở xem trực tiếp được.
Bắt đầu từ đâu
Xuất bảng bán hàng 12 tháng gần nhất ra ba cột ngày, mã khách, doanh số. Trước khi chấm điểm, đếm số lần mua của từng khách xem có bao nhiêu giá trị khác nhau: con số đó quyết định F chia theo ngưỡng tay hay theo số khách.
Khóa DATA BUSINESS của EzTech đi trọn phần dựng báo cáo quản trị trên Power BI, trong đó có phân tích khách hàng trên dữ liệu thật. Cần trao đổi về dữ liệu cụ thể của doanh nghiệp thì để lại thông tin ở trang liên hệ.