顧客管理

リピート率をエクセルで管理する|関数つきの手順とRFM9マスの作り方

リピート率の計算にソフトは不要です。予約台帳の書き出しから、来店サイクル・リピート率・RFM9マスまで、関数つきで手を動かせる形にまとめました。

LLIKE編集部 読了 約11分
リピート率をエクセルで管理する|関数つきの手順とRFM9マスの作り方

リピート率を測るために、まず顧客管理ソフトを入れるべきか。よく聞かれる質問です。

答えは「いいえ」です。必要な計算はすべてエクセル(またはGoogleスプレッドシート)でできます。ソフトが必要になるのは、計算ができるようになったあと、毎週の抽出を自動化したくなってからです。

この記事では、予約台帳の書き出しから、来店サイクル・リピート率・RFMまでを、実際に手を動かせる形でまとめます。関数はすべて載せています。

1. 必要なデータを書き出す

予約台帳からCSVで出す

ほとんどの予約システムに書き出し機能があります。必要な列は6つです。

内容なくても始められるか
A:顧客ID同一人物の判定必須
B:来店日すべての計算の起点必須
C:メニュー区分カラーあり/カットのみ推奨
D:担当者分解の軸あとから
E:会計金額単価・LTVあとから
F:初回来店経路分解の軸(もっとも効く)あとから

顧客IDと来店日の2列だけあれば、来店サイクルは出せます。まずここから始めてください。

最初にやること:顧客IDの重複を潰す

これを飛ばすと、以降の計算がすべて狂います。

同じ方が複数のIDを持っていると、リピートしている人が「新規2人」に数えられます。リピート率が実態より低く出る最大の原因です。

電話番号での重複チェック:

=COUNTIF($G$2:$G$5000, G2)

(G列=電話番号)。2以上の行を目視で確認し、統合してください。

日付が文字列になっていたら

CSVを開くと、日付が文字列(左寄せ)になっていることがあります。計算できないので直します。

=DATEVALUE(B2)

または、列を選択して「データ」→「区切り位置」→完了、で日付として認識されます。

2. 来店サイクルを出す

手順1:並べ替え

顧客ID(昇順)→ 来店日(昇順)の順で並べ替えます。この順序が崩れていると、以降の式が全部おかしくなります。

手順2:前回からの日数

G列に入れます。

=IF(A2=A1, B2-B1, "")

同じ顧客の行だけ引き算し、その顧客の1行目(=初回)は空欄になります。

手順3:初回→2回目を除外する

初回から2回目までの間隔は、2回目以降と性質が違うので外します(「またこの店にするか」の判断が挟まるため)。

H列に「その顧客の何回目か」を出します。

=COUNTIF($A$2:A2, A2)

そのうえで、H列が3以上の行のG列だけを集計対象にします。

手順4:中央値

=MEDIAN(IF($H$2:$H$5000>=3, $G$2:$G$5000))

配列数式です。Microsoft 365 以外の古いエクセルでは、入力後に Ctrl + Shift + Enter で確定してください。Googleスプレッドシートでは =MEDIAN(FILTER(G2:G5000, H2:H5000>=3)) が使えます。

平均(AVERAGE)は使わないでください。1年ぶりに来た方が数人いるだけで20日以上ずれます。

手順5:区分別に出す

=MEDIAN(IF(($H$2:$H$5000>=3)*($C$2:$C$5000="カラー"), $G$2:$G$5000))

掛け算がAND条件になります。「カラー」と「カット」で必ず分けてください。20日以上違うことがあります。

手順6:分布を見る

10日刻みの人数を数えます。

=COUNTIFS($G$2:$G$5000, ">="&J2, $G$2:$G$5000, "<"&J3, $H$2:$H$5000, ">=3")

(J列に 0, 10, 20, 30 … と刻みを入れておく)

山が2つに割れていたら、客層が2種類いるサインです。この場合、店全体の中央値は使えません。区分別に運用してください。

考え方の詳細は来店サイクルの測り方にまとめています。

3. 顧客ごとの一覧を作る

ここからはピボットテーブルを使います。行ごとのデータを、顧客ごとにまとめます。

ピボットテーブルの設定

  • 行:顧客ID
  • 値:来店日の最大値(=最終来店日)
  • 値:来店日の個数(=来店回数)
  • 値:金額の合計
  • 値:金額の平均(=客単価)

これを別シートに値貼り付けして、「顧客マスタ」を作ります。

顧客ID最終来店日来店回数累計金額客単価
10012026-07-14896,00012,000
10022026-04-02213,0006,500

この表が、以降のすべての計算の土台になります。

4. リピート率を計算する

経過日数とサイクル倍数

経過日数  =TODAY()-最終来店日
サイクル倍数 =経過日数 / サイクル中央値

既存継続率

「前期に来店した方のうち、当期も来た方の割合」です。

=COUNTIFS(前期来店有無,"有", 当期来店有無,"有") / COUNTIF(前期来店有無,"有")

前期・当期の判定列は、来店日の最大値と最小値から作ります。

初回リピート率

新規客のリストに対して計算します。

  1. 各顧客の初回来店日をピボットで出す(来店日の最小値)
  2. 対象月に初回来店した顧客だけを抽出
  3. その顧客の来店回数が2以上かを見る
=COUNTIFS(初回来店月,"2026-04", 来店回数,">=2") / COUNTIF(初回来店月,"2026-04")

注意:観測期間 初回リピート率は、来店サイクル中央値の2倍以上が経過した月しか評価できません。サイクル52日なら104日。今日が8月なら、確定値が出せるのは4月以前です。先月の数字を出しても、まだ来ていないだけの方を離脱に数えるだけです。

失客数

=COUNTIF(サイクル倍数, ">1.8")

5. RFMの9マスを作る

顧客マスタに3列足すだけです。

R区分

=IF(サイクル倍数<=1.2,"R3", IF(サイクル倍数<=1.8,"R2","R1"))

F区分(直近1年の来店回数)

=IF(来店回数>=5,"F3", IF(来店回数>=2,"F2","F1"))

9マスの集計 ピボットテーブルで、行=R区分、列=F区分、値=顧客IDの個数。

F1F2F3
R314218678
R2987422
R11,20431241

毎月これを作って、R1・F3の人数だけを追ってください。年5回以上来ていた方が離れかけている層です。ここが増えていたら、売上に出る前の警告です。

読み方はRFM分析で顧客を分けるにまとめています。

6. 今週の連絡リストを出す

ここまでできたら、実務で毎週使うものを作ります。

顧客マスタをフィルタするだけです。

条件:区分="カラー" かつ サイクル倍数 >= 1.0 かつ サイクル倍数 <= 1.2

これが「予兆」リストです。まずここだけに絞ってください。週5〜10名になるはずです。

数式で出すなら:

=FILTER(顧客マスタ, (区分列="カラー")*(倍数列>=1)*(倍数列<=1.2))

(Microsoft 365 / Googleスプレッドシート)

古いエクセルでは、オートフィルタで条件を指定すれば同じことができます。

7. 更新の運用

毎週(15分)

  1. 予約台帳から先週分を追記
  2. ピボットテーブルを更新(右クリック→更新)
  3. 予兆リストをフィルタで出す
  4. 連絡する

毎月(30分)

  1. サイクル中央値を再計算
  2. RFMの9マスを更新し、R1・F3の人数を記録
  3. 失客数を記録

四半期(1時間)

  1. 初回リピート率を、経路別・担当別に出す
  2. 既存継続率を出す

8. エクセルの限界と、次に進む目安

正直に書きます。この運用は、ほぼ3週間で止まります。

止まる理由は連絡が面倒だからではありません。毎週の書き出しとピボット更新が面倒だからです。ここで力尽きて、肝心の連絡までたどり着きません。

エクセルで十分な段階

  • 顧客数が1,000名以下
  • 現在地を把握したい(何が起きているかを知りたい)
  • 打ち手を決めるための分析

分析は、エクセルのほうが自由度が高く優れています。ソフトでは出せない切り口も試せます。

限界が来る段階

症状意味
毎週の更新に30分以上かかる自動化の検討時期
更新が2週続けて止まった運用として成立していない
顧客IDの重複が手に負えないデータの入口を直す必要がある
連絡の履歴が残せない誰にいつ送ったか分からず、重複送信が起きる

とくに最後の「連絡履歴」は、エクセルでは実質的に無理です。送信記録を手で入れる運用は続きません。

分担の考え方

  • 分析(何が起きているか):エクセルで十分。むしろ優れている
  • 抽出と送信(毎週の作業):自動化すべき部分

前回来店日から日数を計算して該当者を並べる作業は、人がやるべき仕事ではありません。人が判断すべきなのは「この人に何を書くか」だけです。

LIKEでは、前回来店からの経過日数と来店回数を条件にお客様を抽出し、該当者へ自動でご連絡する運用ができます。サロンボードをお使いの場合は、予約台帳の情報をそのまま使えます。ただし、まずエクセルで自店の数字を把握してからのほうが、設定すべき条件が明確になります。

よくある質問

Q1. Googleスプレッドシートでもできますか。 A. できます。むしろ FILTERQUERY が使えるぶん、条件抽出は楽です。配列数式も Ctrl+Shift+Enter なしで動きます。共有もしやすいので、スタッフと見る場合はこちらが向いています。

Q2. 何行くらいまで扱えますか。 A. 数万行までは問題なく動きます。5年分・年間3,000来店でも15,000行程度なので、通常のサロンでは容量が問題になることはありません。重くなる場合は、配列数式を減らしてピボットテーブル中心に組み替えてください。

Q3. 顧客IDがない予約システムを使っています。 A. 電話番号を顧客IDの代わりに使えます。ただし変更されると別人になるため、氏名+電話番号の組み合わせで重複を確認してください。この作業を省くと、以降の数字がすべて狂います。

Q4. 平均ではなく中央値を使うのはなぜですか。 A. 来店間隔の分布は必ず右に長い尾を引くためです。1年ぶりに来た方が数人いるだけで平均は20日以上ずれ、その数字で運用を組むと大半のお客様にとって遅すぎるタイミングになります。

Q5. 顧客管理ソフトを入れれば、この作業は不要になりますか。 A. 抽出と送信は自動化できますが、どういう条件で抽出するかは自店で決める必要があります。その条件を決めるために、一度はエクセルで自店の数字を把握しておくことをおすすめします。順序を逆にすると、初期設定のまま使い続けることになりがちです。

Q6. どこから始めればよいですか。 A. 顧客IDと来店日の2列だけを書き出して、来店サイクルの中央値を出すところからです。所要30分程度で、いちばん判断に効く数字が出ます。

まとめ

  • リピート率の計算にソフトは不要。エクセル/スプレッドシートで全部できる
  • 最初にやるのは顧客IDの重複潰し。ここを飛ばすと以降の数字がすべて狂う
  • 来店サイクルは =IF(A2=A1, B2-B1, "")MEDIAN初回→2回目は除外(何回目かを COUNTIF($A$2:A2,A2) で出す)
  • 初回リピート率はサイクル中央値の2倍以上経過した月しか評価できない
  • ピボットで「顧客マスタ」を作れば、RFMの9マスまで一気に出せる
  • 毎週使うのは予兆リスト(サイクル倍数1.0〜1.2)だけに絞る
  • 分析はエクセルが優秀。抽出と送信は自動化すべき部分。更新が2週止まったら切り替えどき

指標全体の設計は美容室のリピート率 完全ガイドにまとめています。

この記事について

LIKE編集部(株式会社SALON CONCIERGE)が執筆しています。 美容サロン向けにLINE連携の予約・顧客管理サービス「LIKE」を開発・運用しており、 サロンボードとの連携や予約の自動化を、実際にサロン様の現場で導入・運用してきた経験にもとづいて書いています。

記事の内容は掲載時点の情報です。仕様や料金は各サービスの公式情報をあわせてご確認ください。 運営会社について

その悩み、LIKEで解決できます

LINE連携CRMで、新規を“資産”に変えて再来へ。
初期費用0円・月額1万円・縛りなし。まずは無料でご相談を。

関連コラム