概要
「このリストで一番よく出てくる値(キー)はどれ?」
「最も頻度の高い商品コードを知りたい」
「最頻出の担当者を自動で出したい」
こういう“最も多く出現する値=最頻値(モード)”を求めるときに使うのが
MODE(モード)関数です。
Excel には
- MODE.SNGL(単一の最頻値)
- MODE.MULT(複数の最頻値)
の2種類がありますが、
「最頻出キーを1つだけ取得したい」場合は MODE.SNGL を使えばOKです。
初心者でも迷わないように、
“最頻出キーを取るための型”として丁寧に解説します。
MODE.SNGL の基本
書式
=MODE.SNGL(数値範囲)
MODE.SNGL は
「最も多く出現した数値を返す」
という関数です。
注意点として、MODE 系は 数値専用 です。
文字列(商品コード・担当者名など)には直接使えません。
しかし、後で紹介する XLOOKUP と組み合わせる方法 を使えば、
文字列キーでも最頻出を求められます。
数値の最頻値を求める基本パターン
例:A2:A100 の中で最も多く出現する数値を求める
=MODE.SNGL(A2:A100)
これだけで、
「最も頻度の高い数値」が返ってきます。
文字列キーの最頻出を求める(実務で最も使うパターン)
商品コードや担当者名など、
“文字列”の最頻出を求めたい場面が圧倒的に多いです。
MODE は文字列に使えないため、
次の2ステップで求めます。
ステップ1:UNIQUE でキー一覧を作る
例:A2:A100 に商品コードがあるとします。
D2 に UNIQUE を使って重複なし一覧を作ります。
=UNIQUE(A2:A100)
ステップ2:COUNTIF で出現回数を数え、最大のものを XLOOKUP で取得
E2 に「各コードの出現回数」を並べます。
=COUNTIF(A2:A100, D2#)
D2# は UNIQUE のスピル範囲です。
そして、最頻出コードを F2 に取得します。
=XLOOKUP(MAX(E2#), E2#, D2#)
意味をかみ砕くと:
- E2# … 各コードの出現回数
- MAX(E2#) … 最も大きい出現回数
- XLOOKUP(MAX(E2#), E2#, D2#)
→ 出現回数が最大の行のコードを返す
これで「最頻出キー(文字列)」が取得できます。
文字列の最頻出を“1式で”求めるテンプレート
上の手順を1つの式にまとめると、
次の“万能テンプレート”になります。
文字列の最頻出キーを求める1式テンプレート
=XLOOKUP(
MAX(COUNTIF(A2:A100, UNIQUE(A2:A100))),
COUNTIF(A2:A100, UNIQUE(A2:A100)),
UNIQUE(A2:A100)
)
これが実務で最も使える形です。
- UNIQUE でキー一覧
- COUNTIF で出現回数
- MAX で最大値
- XLOOKUP で該当キーを返す
という流れが1式にまとまっています。
MODE.MULT(複数の最頻値)について
最頻値が複数ある場合(例:1 と 3 が同じ回数で最頻)
MODE.MULT を使うと複数の最頻値をスピルで返せます。
=MODE.MULT(A2:A100)
ただし、これも数値専用です。
文字列の場合は UNIQUE+COUNTIF+LARGE を使う必要があります。
よくあるつまずきと対策
MODE は文字列に使えない
商品コード・担当者名などは文字列なので、
MODE.SNGL ではエラーになります。
→ UNIQUE+COUNTIF+XLOOKUP のテンプレートを使う。
空白セルがあると COUNTIF の結果がズレることがある
空白を除外したい場合は FILTER を使います。
=XLOOKUP(
MAX(COUNTIF(FILTER(A2:A100, A2:A100<>""), UNIQUE(FILTER(A2:A100, A2:A100<>"")))),
COUNTIF(FILTER(A2:A100, A2:A100<>""), UNIQUE(FILTER(A2:A100, A2:A100<>""))),
UNIQUE(FILTER(A2:A100, A2:A100<>""))
)
最頻値が複数ある場合は1つだけ返される
XLOOKUP は最初の一致だけ返します。
複数の最頻値をすべて返したい場合は MODE.MULT または FILTER+LARGE を使います。
例題
問題1
A2:A100 に数値が入っています。最も多く出現する数値を B2 に表示する式を書いてください。
=MODE.SNGL(A2:A100)
問題2
A2:A100 に商品コード(文字列)が入っています。重複なしの商品コード一覧を C2 に作る式を書いてください。
=UNIQUE(A2:A100)
問題3
問題2で作った UNIQUE の一覧(C2#)について、A2:A100 の中での出現回数を D2 に表示する式を書いてください。
=COUNTIF(A2:A100, C2#)
問題4
問題3の出現回数(D2#)の中で最大の回数を E2 に表示する式を書いてください。
=MAX(D2#)
問題5
A2:A100 の中で最も多く出現する商品コード(文字列)を、1つの式で F2 に表示してください。
=XLOOKUP(
MAX(COUNTIF(A2:A100, UNIQUE(A2:A100))),
COUNTIF(A2:A100, UNIQUE(A2:A100)),
UNIQUE(A2:A100)
)
まとめ
最頻出キーを求めるときは、
数値なら MODE.SNGL、文字列なら UNIQUE+COUNTIF+XLOOKUP
というのが鉄板です。
覚えるべきテンプレートはこれだけ。
数値の最頻値
=MODE.SNGL(範囲)
文字列の最頻出キー
=XLOOKUP(
MAX(COUNTIF(範囲, UNIQUE(範囲))),
COUNTIF(範囲, UNIQUE(範囲)),
UNIQUE(範囲)
)
この2つを使いこなせば、
売上データ・顧客データ・担当者データなど、
どんな表でも「最もよく出てくる値」を一瞬で求められるようになります。
