Segmentasi Pelanggan RFM di Spreadsheet Tanpa Coding
Blog/Tutorial Excel & Sheets/Segmentasi Pelanggan RFM di Spreadsheet Tanpa Coding

Segmentasi Pelanggan RFM di Spreadsheet Tanpa Coding

BimaBima
·24 Desember 2025·10 menit baca

Penulis

Bima

Bima

Founder & Data Professional

Bagikan

TL;DR

RFM ngelompokin pelanggan dari tiga angka: berapa hari lalu terakhir belanja (recency), berapa kali belanja (frequency), dan berapa total belanjanya (monetary). Tiap angka dikasih skor 1-5 pakai PERCENTRANK, lalu gabungan skornya dipetakan ke segmen seperti Juara, Setia, dan Berisiko Hilang. Semuanya bisa dikerjain di Google Sheets pakai SUMIFS, COUNTIFS, dan MAXIFS.

RFM ngelompokin pelanggan dari tiga angka yang udah ada di data transaksi kamu: kapan terakhir belanja, berapa kali belanja, dan berapa total uangnya.

Nggak butuh Python. Nggak butuh tool berbayar. Lima rumus di Google Sheets udah cukup.

Yang bikin RFM kepakai di UMKM: hasilnya langsung bisa ditindaklanjuti. Bukan "segmen 3 punya karakteristik unik", tapi "37 pelanggan ini biasanya belanja tiap 3 minggu dan sekarang udah 2 bulan nggak muncul".

Di bawah ini aku pakai data toko_berkah, distributor sembako grosir dengan 1.847 pelanggan aktif dan 48.310 transaksi sepanjang 2025.

Apa itu segmentasi RFM?

RFM adalah metode pengelompokan pelanggan berdasarkan tiga ukuran: Recency (berapa hari sejak transaksi terakhir), Frequency (berapa kali transaksi dalam periode tertentu), dan Monetary (total nilai belanjanya). Tiap pelanggan dikasih skor 1-5 di masing-masing ukuran, lalu kombinasi ketiganya dipakai buat nentuin segmennya.

Metode ini lahir dari dunia katalog pos di Amerika tahun 1990-an, dan bertahan karena satu alasan: datanya selalu ada. Tiap bisnis yang nyatet transaksi otomatis punya bahan buat RFM.

Bedanya dengan segmentation berdasarkan demografi: RFM pakai perilaku beli, bukan atribut. Umur dan lokasi nggak ngasih tau siapa yang bakal beli bulan depan. Pola belanja ngasih tau.

Data apa yang dibutuhin?

Tiga kolom. Itu doang.

KolomIsiContoh
Aid_pelangganTB-0417
Btanggal transaksi2025-11-04
Cnilai transaksi2450000

Namanya sheet transaksi. Satu baris = satu transaksi, bukan satu item. Kalau data kamu per item, jumlahin dulu per nota.

Bikin sheet kedua namanya rfm, isi kolom A dengan daftar id_pelanggan unik. Cara tercepat:

=UNIQUE(transaksi!A2:A)

Satu hal yang wajib disiapin: sel acuan tanggal. Taruh di sheet rfm sel H1.

=MAX(transaksi!B2:B)

Ini tanggal transaksi terakhir di data kamu. Semua perhitungan recency ngacu ke sel ini, bukan ke TODAY(). Kalau pakai TODAY(), hasil RFM kamu bulan depan bakal beda padahal datanya sama.

Langkah 1: Hitung R, F, dan M mentahnya

Tiga rumus, satu per kolom.

Recency (hari sejak transaksi terakhir):

=$H$1 - MAXIFS(transaksi!$B$2:$B;transaksi!$A$2:$A;$A2)

MAXIFS nyari tanggal terbesar milik pelanggan itu, lalu dikurangi tanggal acuan. Hasilnya jumlah hari.

Frequency (jumlah transaksi):

=COUNTIFS(transaksi!$A$2:$A;$A2)

COUNTIFS ngitung berapa baris punya id pelanggan itu.

Monetary (total belanja):

=SUMIFS(transaksi!$C$2:$C;transaksi!$A$2:$A;$A2)

SUMIFS jumlahin semua nilai transaksi milik pelanggan itu.

Kalau file kamu besar, tiga rumus ini bisa bikin sheet berat. Cara ringannya: pakai satu pivot table dengan id_pelanggan di baris, lalu MAX tanggal, COUNT, dan SUM di nilai. Hasilnya sama, jauh lebih cepat.

Langkah 2: Ubah jadi skor 1 sampai 5

Angka mentah nggak bisa dibandingin langsung. Total belanja Rp 84 juta itu besar atau kecil? Tergantung pelanggan lain.

Makanya skornya dihitung relatif, pakai peringkat persentil.

Skor Frequency dan Monetary (makin besar makin bagus):

=ROUNDUP(PERCENTRANK($C$2:$C;C2)*5;0)

PERCENTRANK ngasih posisi nilai itu di antara semua nilai, dalam bentuk 0 sampai 1. Dikali 5 lalu dibulatkan ke atas jadi skor 1-5.

Tambahin pengaman biar skor 0 nggak muncul di nilai paling rendah:

=MAX(1;ROUNDUP(PERCENTRANK($C$2:$C;C2)*5;0))

Skor Recency (makin kecil makin bagus, jadi dibalik):

=MAX(1;ROUNDUP((1-PERCENTRANK($B$2:$B;B2))*5;0))

Perhatiin bagian 1-PERCENTRANK. Ini yang ngebalik arahnya.

Pelanggan yang belanja 4 hari lalu dapet skor 5. Yang belanja 280 hari lalu dapet skor 1. Kalau kamu lupa balik ini, seluruh segmentasi kamu terbalik dan kelihatan tetap masuk akal, itu yang bahaya.

Cek cepat: urutkan sheet dari recency terkecil. Baris paling atas harus punya skor R = 5.

Langkah 3: Petakan skor jadi segmen

Sekarang tiap pelanggan punya tiga angka, misalnya R=5, F=4, M=5.

Ada 125 kombinasi kalau dipakai semua. Terlalu banyak buat ditindaklanjuti. Padatkan jadi 6 segmen.

Bikin dua kolom bantu dulu:

Skor_FM = ROUND((F+M)/2;0)
Skor_R  = kolom skor recency

Lalu petakan pakai IFS:

=IFS(
  AND(R>=4;FM>=4);"Juara";
  AND(R>=4;FM>=2);"Setia";
  AND(R>=4;FM=1);"Pelanggan Baru";
  AND(R<=3;R>=2;FM>=3);"Berisiko Hilang";
  AND(R=1;FM>=3);"Hilang Bernilai";
  TRUE;"Pasif"
)

Enam segmen, enam tindakan yang beda:

SegmenCiriTindakan
JuaraBaru belanja, sering, nilainya besarKasih akses duluan ke stok baru, jangan diskon
SetiaBaru belanja, cukup rutinTawarin naik ke paket lebih besar
Pelanggan BaruBaru belanja, baru sekaliFollow up pesanan kedua dalam 14 hari
Berisiko HilangDulu rutin, mulai jarangTelepon, cari tau apa yang berubah
Hilang BernilaiDulu besar, udah lama nggak munculTawaran khusus, ini yang paling rugi kalau lepas
PasifJarang, kecil, lama nggak munculMasukkan ke daftar broadcast biasa, jangan buang waktu

Yang paling penting dari tabel ini: kolom tindakan. Segmentasi tanpa tindakan cuma kolom warna-warni.

Contoh kasus: RFM toko_berkah Desember 2025

Setelah 1.847 pelanggan dipetakan, sebarannya begini:

SegmenJumlah% pelanggan% omzet
Juara1749,4%41,2%
Setia49827,0%33,8%
Pelanggan Baru22112,0%3,1%
Berisiko Hilang20911,3%12,4%
Hilang Bernilai884,8%6,9%
Pasif65735,6%2,6%

174 pelanggan (9,4%) nyumbang 41,2% omzet. Angka ini yang paling sering bikin pemilik toko diam sebentar.

Tapi yang lebih berguna ada di baris Berisiko Hilang. 209 pelanggan itu nyumbang 12,4% omzet dan lagi bergerak menjauh.

Aku hitung nilai rata-rata mereka: Rp 3,1 juta per bulan waktu masih aktif. Kalau setengahnya lepas, itu Rp 324 juta setahun yang hilang tanpa ada yang nyadar, soalnya nggak ada momen dramatis. Mereka cuma pelan-pelan berhenti pesen.

Toko_berkah nelepon 209 nama itu selama dua minggu. 61 orang jawab kalau mereka pindah ke pesaing yang mulai nawarin pengiriman sore. 34 orang bilang ada barang yang sering kosong.

Dua temuan itu nggak ada di data mana pun. RFM cuma nunjukin ke siapa harus nelepon.

Tiga bulan kemudian, 118 dari 209 balik ke pola belanja normal.

Cara ngerekap dan mantau perpindahan segmen

Rekap per segmen pakai COUNTIFS dan SUMIFS biasa:

Jumlah pelanggan =COUNTIFS($G$2:$G;$A2)
Total omzet      =SUMIFS($E$2:$E;$G$2:$G;$A2)
Rata-rata omzet  =IFERROR(SUMIFS($E$2:$E;$G$2:$G;$A2)/COUNTIFS($G$2:$G;$A2);0)

Yang lebih berharga: bandingin bulan ini dengan bulan lalu.

Simpan hasil tiap bulan ke sheet riwayat_rfm dengan kolom tanggal_hitung. Lalu cari yang pindah:

=IF(segmen_bulan_ini<>segmen_bulan_lalu;
   segmen_bulan_lalu&" > "&segmen_bulan_ini;"")

Perpindahan dari Setia ke Berisiko Hilang itu alarm paling awal yang bisa kamu dapet. Jauh lebih dini daripada nunggu omzet bulanan turun.

Buat sintaks lengkap PERCENTRANK, lihat dokumentasi resmi Google Sheets.

Kesalahan umum waktu bikin RFM

Skor recency nggak dibalik. Ini kesalahan nomor satu. Hasilnya kelihatan normal, tapi pelanggan terbaik kamu masuk segmen Pasif.

Pakai TODAY() sebagai acuan tanggal. Hasil RFM jadi berubah tiap kali file dibuka, dan kamu nggak bisa bandingin antar bulan.

Retur nggak dikurangin. Kalau transaksi retur nggak dicatat sebagai nilai negatif, monetary pelanggan yang sering retur bakal kelihatan besar palsu. Cek dulu apakah kolom nilai kamu udah bersih.

Data transaksi per item, bukan per nota. Frequency pelanggan yang beli 12 jenis barang sekali datang bakal kehitung 12. Jumlahin dulu per nomor nota.

Bikin 11 segmen. Makin banyak segmen, makin kecil kemungkinan ada tindakan nyata buat masing-masing. Enam itu batas praktis buat tim kecil.

Dihitung sekali lalu ditinggal. RFM satu kali cuma potret. Nilai aslinya muncul di bulan ketiga, waktu kamu bisa lihat siapa yang bergerak turun.

FAQ

Berapa data minimal buat bikin RFM?

Minimal 12 bulan transaksi dan sekitar 200 pelanggan unik. Di bawah 200 pelanggan, pembagian skor jadi lima kelompok bikin tiap kelompok isinya cuma puluhan orang dan bedanya nggak berarti. Kalau data kamu lebih kecil, pakai skala 1-3 aja, bukan 1-5. Kalau riwayatnya kurang dari setahun, recency-nya bakal bias ke pelanggan baru.

Recency dihitung dari tanggal hari ini atau tanggal transaksi terakhir di data?

Dari tanggal transaksi terakhir di data, bukan dari hari ini. Kalau data kamu berhenti di 31 Desember tapi kamu ngitungnya bulan Maret, semua pelanggan bakal kelihatan tidak aktif. Pakai satu sel berisi MAX tanggal transaksi sebagai titik acuan, lalu rujuk sel itu di semua rumus recency.

Kenapa skor recency dibalik?

Karena angka recency yang kecil itu bagus. Pelanggan yang belanja 3 hari lalu lebih berharga daripada yang belanja 300 hari lalu. Jadi 3 hari harus dapat skor 5, dan 300 hari dapat skor 1. Frequency dan monetary sebaliknya, angka besar dapat skor besar. Ini kesalahan paling sering di RFM buatan sendiri.

Bisa nggak RFM dipakai buat bisnis jasa atau langganan?

Bisa, tapi frequency-nya perlu diganti. Buat bisnis langganan bulanan, hampir semua pelanggan aktif punya frequency yang sama, jadi kolomnya nggak ngebedain apa-apa. Ganti frequency dengan jumlah bulan berlangganan aktif, atau jumlah pemakaian layanan. Recency dan monetary tetap kepakai apa adanya.

Seberapa sering RFM perlu dihitung ulang?

Sebulan sekali cukup buat kebanyakan bisnis retail dan grosir. Yang penting bukan hitungannya, tapi perpindahan segmennya. Simpan hasil tiap bulan di sheet terpisah dengan kolom tanggal, lalu bandingin siapa yang pindah dari Setia ke Berisiko. Perpindahan itu sinyalnya, bukan posisi satu bulan.

Kerjain hari ini

Tiga hal yang nentuin hasil RFM kamu benar atau nggak. Tanggal acuan pakai MAX transaksi, bukan TODAY. Skor recency dibalik. Dan tiap segmen wajib punya satu tindakan yang jelas.

Buka file transaksi kamu, ambil tiga kolom (id pelanggan, tanggal, nilai), lalu jalanin MAXIFS, COUNTIFS, dan SUMIFS. Setengah jam, dan kamu punya daftar pelanggan yang lagi menjauh.

Telepon lima nama teratas dari segmen Berisiko Hilang minggu ini. Itu langkah yang paling cepat kelihatan hasilnya.

Setelah tau siapa pelanggan terbaik kamu, cek juga apa kata mereka lewat Net Promoter Score di Google Sheets.

Coba Langsung

Mau praktek langsung? Mulai latihan SQL gratis

Latihan interaktif, langsung di browser.

Buka NgulikSQL →
Bagikan:
Bima
Ditulis oleh

Bima

Founder & Data Professional

Founder Ngulik Data. Passionate about making data analysis accessible for everyone.

Artikel terkait

XLOOKUP Google Sheets: Cara Pakai dan Contohnya (2026)
Tutorial Excel & Sheets
20 Juli 2026•9 menit baca

XLOOKUP Google Sheets: Cara Pakai dan Contohnya (2026)

XLOOKUP nyari nilai dan bisa ke kiri atau kanan, plus punya nilai default kalau nggak ketemu. Ini pengganti VLOOKUP yang lebih ringkas.

BimaBima
INDEX MATCH Google Sheets: Lookup Lebih Fleksibel dari VLOOKUP (2026)
Tutorial Excel & Sheets
19 Juli 2026•9 menit baca

INDEX MATCH Google Sheets: Lookup Lebih Fleksibel dari VLOOKUP (2026)

INDEX MATCH gabung dua fungsi buat lookup yang bisa nyari ke kiri dan nggak gampang rusak. Ini alasan banyak analis pindah dari VLOOKUP.

BimaBima
SUMPRODUCT Google Sheets: Hitung Berbobot Tanpa Ribet (2026)
Tutorial Excel & Sheets
18 Juli 2026•8 menit baca

SUMPRODUCT Google Sheets: Hitung Berbobot Tanpa Ribet (2026)

SUMPRODUCT ngaliin dua kolom atau lebih baris per baris, terus jumlahin hasilnya. Cocok buat total qty kali harga sampai hitungan bersyarat.

BimaBima
Kembali ke Blog
Ngulik Data logoNgulik Data

Platform edukasi data lengkap untuk professionals Indonesia. Belajar SQL, Data Analysis, dan lebih banyak lagi dengan praktek langsung dan feedback real-time.

© 2026 Ngulik Data. Semua hak dilindungi.

TAUTAN
BantuanHargaDatasetBlogAfiliasi
LEGAL
Syarat & KetentuanKebijakan Privasi
Ngulik Data
DatasetLeaderboardBlogStore