Excel関数 逆引き集 | 最頻出キーを取得 → MODE

Excel VBA Excel
スポンサーリンク

概要

「このリストで一番よく出てくる値(キー)はどれ?」
「最も頻度の高い商品コードを知りたい」
「最頻出の担当者を自動で出したい」

こういう“最も多く出現する値=最頻値(モード)”を求めるときに使うのが
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つを使いこなせば、
売上データ・顧客データ・担当者データなど、
どんな表でも「最もよく出てくる値」を一瞬で求められるようになります。

Excel
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました