データ分析をしていると、「このデータの中で一番多く出てくる値はどれか」を把握したい場面が出てきます。
平均値や中央値と並ぶ代表値のひとつである「最頻値」は、試験の点数分布・アンケートの回答・商品の売れ筋サイズの把握など、幅広い場面で活用できます。
エクセルにはMODE関数・MODE.SNGL関数・MODE.MULT関数という最頻値を求める専用関数が用意されており、データの規模や目的に応じて使い分けることが可能です。
この記事では、エクセルで最頻値を求める方法(MODE関数・最頻値の出し方・計算式)について、基本の操作から複数の最頻値を同時に取得する応用テクニックまで、イメージ図を交えながら丁寧に解説していきます。
ぜひ最後まで参考にしてみてください。
【結論】エクセルで最頻値を求めるにはMODE.SNGL関数が基本で、複数の最頻値を一括取得したい場合はMODE.MULT関数を使い、文字列の最頻値にはCOUNTIF+MAX+INDEX+MATCHの組み合わせで対応できる
それではまず、エクセルで最頻値を求める方法の全体像と、目的別に使うべき関数の結論について解説していきます。
最頻値とは、データの中で最も多く出現する値のことで、英語では「Mode(モード)」と呼ばれます。
最頻値を求める関数の目的別早見表
数値データの最頻値を1つ求めたい → MODE.SNGL関数(Excel2010以降の推奨関数)またはMODE関数(古いバージョンとの互換性がある)を使う。
最頻値が複数ある場合にすべて取得したい → MODE.MULT関数を使う。配列数式として入力することで複数の最頻値を縦方向に出力できる。
文字列データ(アンケートの選択肢など)の最頻値を求めたい → COUNTIF関数・MAX関数・INDEX関数・MATCH関数を組み合わせた数式を使う。MODE関数は数値のみ対応のため文字列には使えない。
最頻値が何回出現しているかも合わせて知りたい → COUNTIF(範囲,MODE.SNGL(範囲))で最頻値の出現回数を取得できる。
まずは「1つの最頻値を求めるならMODE.SNGL関数、複数ならMODE.MULT関数」というシンプルな使い分けを覚えておくとよいでしょう。
以下のイメージ図は、MODE.SNGL関数をセルに入力して最頻値を求めている操作例を示しています。

最頻値・平均値・中央値の違いと使い分け
データの「代表値」には最頻値・平均値・中央値の3種類があり、それぞれ特徴が異なります。
どの代表値を使うかによって、データの解釈が大きく変わることがあります。
| 代表値 | 意味 | エクセルの関数 | 向いている場面 |
|---|---|---|---|
| 最頻値(Mode) | 最も多く出現する値 | MODE.SNGL関数 | 人気サイズ・よく出るスコアの把握 |
| 平均値(Mean) | すべての値の合計を個数で割った値 | AVERAGE関数 | 全体の傾向を数値で表したい場合 |
| 中央値(Median) | データを並べたときの真ん中の値 | MEDIAN関数 | 外れ値の影響を受けにくい代表値 |
たとえばアパレルの売れ筋サイズを把握したい場合は「平均サイズ」よりも「最も多く売れたサイズ(最頻値)」の方がビジネス上の判断に直結します。
外れ値(極端に大きいまたは小さい値)が含まれるデータでは、平均値より最頻値や中央値の方が実態に近い代表値になることが多いでしょう。
最頻値がデータに存在しない場合・エラーになる場合
MODE.SNGL関数は、すべての値が一度しか出現しない場合(最頻値が存在しない場合)に「#N/A」エラーを返します。
エラーを防ぐには、IFERROR関数と組み合わせて「最頻値なし」などのメッセージを表示する方法が有効です。
エラーを回避してメッセージを表示する数式
=IFERROR(MODE.SNGL(A2:A15),”最頻値なし”)
→ 最頻値が存在しない場合に「最頻値なし」と表示する
=IFERROR(MODE.SNGL(A2:A15),””)
→ 最頻値がない場合に空白を表示する(表をすっきり見せたい場合)
データの件数が少ない場合やすべての値が異なる場合は最頻値が存在しない
ため、IFERROR関数を組み合わせておくことで安心してデータ集計が行えます。
MODE.SNGL関数・MODE関数の書式と具体的な使い方
続いては、エクセルで最頻値を求めるメインの関数であるMODE.SNGL関数とMODE関数の書式・引数の意味・具体的な使用例を確認していきます。
どちらの関数も基本的な動作は同じですが、推奨される関数と互換性のある関数の違いを理解しておきましょう。
MODE.SNGL関数の書式と引数の説明
MODE.SNGL関数はExcel2010以降で追加された最頻値を求める関数で、従来のMODE関数の後継として位置づけられています。
単一の最頻値(最も多く出現する1つの値)を返します。
MODE.SNGL関数の書式
=MODE.SNGL(数値1, [数値2], …)
引数の説明
数値1 → 最頻値を求めたい数値またはセル範囲(必須)
数値2以降 → 追加で指定する数値またはセル範囲(省略可能・最大254個まで指定可能)
使用例
=MODE.SNGL(A2:A15) → A2からA15の中の最頻値を返す
=MODE.SNGL(A2:A15,C2:C15) → 2つの範囲をまとめた最頻値を返す
=MODE.SNGL(72,78,85,78,90,78) → 直接数値を指定することも可能(この場合78が返る)
MODE.SNGL関数は文字列・論理値・空白セルを無視して数値のみを対象に計算するという特徴があります。
データの中に文字や空白が混在していても問題なく最頻値を求められますが、文字列自体の最頻値は別の方法が必要です。
旧MODE関数との違いと互換性について
Excel2007以前から使われてきた「MODE関数」は現在もエクセルで使用できますが、将来のバージョンで廃止される可能性があるため、新規作成するファイルではMODE.SNGL関数を使うことを推奨します。
MODE関数とMODE.SNGL関数の比較
MODE関数(旧バージョン互換)
=MODE(A2:A15)
→ 最頻値を返す。Excel2007以前からある古い関数。動作はMODE.SNGL関数と同じ。
MODE.SNGL関数(推奨)
=MODE.SNGL(A2:A15)
→ Excel2010以降の推奨関数。機能は同じだが名前が明確で今後もサポートされる。
使い分けの基準
Excel2007以前で開く可能性があるファイル → MODE関数を使う
Excel2010以降のみで使用するファイル → MODE.SNGL関数を使う
社内で古いバージョンのエクセルを使っている環境が混在している場合は、MODE関数を使っておけば互換性の心配がなく安全でしょう。
以下のイメージ図は、MODE関数とMODE.SNGL関数の両方を入力して結果を比較している操作例を示しています。
Microsoft Excel — MODE関数とMODE.SNGL関数の比較
数式
データ
fx
=MODE(A2:A10)
← C2(旧MODE関数)・D2(新MODE.SNGL)を比較
最頻値を条件付きで求めるMAXIFS+COUNTIFS活用法
「特定の条件を満たすデータの中での最頻値を求めたい」という場合、MODE.SNGL関数単体では条件を指定できません。
このような場面では、IF関数と組み合わせた配列数式を使うか、COUNTIFS関数とMAXIFS関数を組み合わせるアプローチが有効です。
条件付き最頻値を求める配列数式
A列が「東京」の行のB列データの最頻値を求める例
=MODE.SNGL(IF(A2:A15=”東京”,B2:B15))
→ Ctrl+Shift+Enterで確定する(配列数式)
Excel365・Excel2019以降の場合(配列数式不要)
=MODE.SNGL(FILTER(B2:B15,A2:A15=”東京”))
→ FILTER関数で条件を満たすデータを抽出してからMODE.SNGLに渡す。Enterのみで確定。
FILTER関数との組み合わせはExcel365やExcel2019以降で使えるスマートな方法で、配列数式の特殊な確定操作(Ctrl+Shift+Enter)が不要で扱いやすいでしょう。
MODE.MULT関数で複数の最頻値を一括取得する方法
続いては、最頻値が複数存在するデータに対して、すべての最頻値をまとめて取得できるMODE.MULT関数の使い方を確認していきます。
MODE.SNGL関数は最も最初に出てくる最頻値を1つだけ返しますが、「同じ回数出現する値が複数ある場合」はすべて把握したいこともあります。
MODE.MULT関数の書式と配列数式の入力方法
MODE.MULT関数は複数の最頻値を縦方向に並べて返す関数です。
通常の関数と異なり、複数のセルにまたがって結果を出力する「配列数式」として入力する必要があります。
MODE.MULT関数の書式と入力手順
=MODE.MULT(数値1, [数値2], …)
入力手順(Excel365以外)
① 結果を表示したいセル範囲(例 D2:D5)を選択する(最頻値の数より多めに選ぶ)
② 数式バーに「=MODE.MULT(A2:A15)」と入力する
③ Ctrl+Shift+Enterで確定する(波括弧が自動で付いて配列数式になる)
入力手順(Excel365)
① D2セルだけを選択する
② 「=MODE.MULT(A2:A15)」と入力してEnterで確定する
→ スピル機能により結果が自動的に下方向に展開される
最頻値がない余剰のセルには「#N/A」が表示されるのが正常
Excel365ではスピル機能によって自動的に必要なセル数だけ結果が展開されるため、選択範囲を事前に決める必要がなく非常に扱いやすくなりました。
MODE.MULT関数の結果を整理してエラーを非表示にする方法
MODE.MULT関数を配列数式として入力すると、最頻値が存在しないセルには「#N/A」エラーが表示されます。
このエラーを非表示にしてすっきり見せたい場合は、IFERROR関数と組み合わせます。
MODE.MULT関数のエラーを非表示にする方法
Excel365(スピル対応)
=IFERROR(MODE.MULT(A2:A15),””)
→ EnterのみでOK。余剰セルが空白になる。
Excel2019以前(配列数式)
{=IFERROR(MODE.MULT(A2:A15),””)}
→ Ctrl+Shift+Enterで確定する(波括弧は自動で付く)
最頻値が何個あるかを事前に確認する方法
=COUNTIF(A2:A15,MODE.SNGL(A2:A15))
→ 最頻値の出現回数を取得し、同じ出現回数の値が何個あるか確認の手がかりになる
最頻値が何個あるかは事前には分からないため、余裕を持って多めのセル範囲に配列数式を入力し、エラーはIFERRORで空白にする方法が実用的です。
最頻値の出現回数をCOUNTIF関数で確認する活用例
最頻値そのものだけでなく、「最頻値が何回出現しているか」も把握することで、データの特徴をより深く理解できます。
最頻値の出現回数を求める数式
=COUNTIF(A2:A15,MODE.SNGL(A2:A15))
→ 最頻値が何回出現しているかを返す
応用 → 最頻値の出現割合(パーセント)を求める
=COUNTIF(A2:A15,MODE.SNGL(A2:A15))/COUNT(A2:A15)
→ 全データ件数に対する最頻値の割合を返す(例 3件/15件=20%)
最頻値の出現回数と全体に占める割合を一覧化する例
最頻値 → =MODE.SNGL(A2:A15)
出現回数 → =COUNTIF(A2:A15,D2)
全体に占める割合 → =E2/COUNT(A2:A15)
最頻値の出現回数が全体の件数に対して少ない場合は、最頻値の代表性が低いことを示しています。
出現回数・出現割合・最頻値の3つをセットで把握することで、データの分布をより正確に理解できます。
文字列データの最頻値を求める方法とCOUNTIF関数の応用
続いては、文字列データ(アンケートの回答・カテゴリ名・地名など)の最頻値を求める方法を確認していきます。
MODE.SNGL関数は数値にしか対応していないため、文字列の最頻値は別のアプローチが必要です。
COUNTIF+MAX+INDEX+MATCH関数で文字列の最頻値を求める
文字列データの最頻値を求めるには、COUNTIF関数で各値の出現回数を計算し、MAXで最大出現回数を特定して、INDEX+MATCH関数でその値を取り出すという組み合わせを使います。
文字列の最頻値を求める配列数式
=INDEX(A2:A15,MATCH(MAX(COUNTIF(A2:A15,A2:A15)),COUNTIF(A2:A15,A2:A15),0))
→ Ctrl+Shift+Enterで確定する(配列数式)
数式の動作の仕組み
① COUNTIF(A2:A15,A2:A15) → 各セルの値がA2:A15全体で何回出現するかを配列で返す
② MAX(…) → その中の最大値(最も多く出現する回数)を取得する
③ MATCH(…,0) → その最大出現回数が配列の何番目にあるかを返す
④ INDEX(A2:A15,…) → その位置のセルの値(文字列の最頻値)を返す
Excel365ではEnterのみで確定できる(スピル非使用の場合)
この数式は少し複雑に見えますが、COUNTIF・MAX・INDEX・MATCHというよく使われる4つの関数を組み合わせるだけで文字列の最頻値が取得できる点は覚えておく価値があります。
以下のイメージ図は、アンケートの回答データから文字列の最頻値を求める操作例を示しています。
Microsoft Excel — 文字列データの最頻値をINDEX+MATCH+COUNTIF+MAXで取得
数式
データ
fx
{=INDEX(A2:A12,MATCH(MAX(COUNTIF(A2:A12,A2:A12)),COUNTIF(A2:A12,A2:A12),0))}
COUNTIF関数でデータの出現回数一覧を作成して最頻値を視覚化する
最頻値を求めるだけでなく、各値がそれぞれ何回出現するかの一覧を作成することで、データの分布全体を把握できます。
各値の出現回数一覧を作成する手順
① 別の列に一意の値一覧を作成する(手動またはExcel365の「=UNIQUE(A2:A15)」で取得)
② 隣の列にCOUNTIF関数で出現回数を計算する
=COUNTIF($A$2:$A$15,E2)
→ E2の値がA列全体で何回出現するかを返す
③ オートフィルで下のセルに反映させる
④ 出現回数をもとに棒グラフを作成すると度数分布が視覚化できる
度数分布の一覧と棒グラフを組み合わせることで、最頻値がデータ全体の中でどのような位置づけにあるかを一目で把握できるダッシュボードが完成します。
最頻値を活用した実務での応用例
最頻値は統計の教科書的な概念だけでなく、実務のさまざまな場面で役立てることができます。
| 活用場面 | 最頻値の活用方法 | 使う関数 |
|---|---|---|
| アパレルの在庫管理 | 最も売れているサイズ(最頻値)を把握して発注数を最適化する | MODE.SNGL関数 |
| アンケート集計 | 最も多く選ばれた回答選択肢(文字列の最頻値)を把握する | INDEX+MATCH+COUNTIF+MAX |
| 試験・テスト分析 | 最も多くの生徒が取った得点(最頻値)を把握して難易度を評価する | MODE.SNGL関数 |
| 交通量調査 | 最も混雑する時間帯(最頻値)を特定してスタッフ配置を最適化する | MODE.SNGL関数 |
| 不動産価格分析 | 最も多い成約価格帯(最頻値)を把握して市場の価格感覚を捉える | MODE.MULT関数 |
最頻値は「データの中で最も典型的な値」を示すため、マーケティング・品質管理・教育評価など多くの実務場面でインサイトを得るための基本指標として活用できます。
まとめ
この記事では、エクセルで最頻値を求める方法(MODE関数・最頻値の出し方・計算式)について、基本の関数操作から複数最頻値の取得・文字列データへの対応・実務活用例まで幅広く解説しました。
数値データの最頻値を1つ求めるにはMODE.SNGL関数が最も手軽で推奨される方法であり、古いバージョンとの互換性が必要な場合はMODE関数を使います。
最頻値が複数存在する場合はMODE.MULT関数を配列数式として入力することですべての最頻値を一括取得でき、文字列データの最頻値はINDEX・MATCH・COUNTIF・MAXを組み合わせた配列数式で対応します。
最頻値の出現回数はCOUNTIF関数で確認でき、出現割合と合わせて把握することでデータの代表性をより正確に評価できます。
「1つならMODE.SNGL、複数ならMODE.MULT、文字列ならINDEX+MATCH+COUNTIF+MAX」という使い分けを覚えておくことが、最頻値分析をマスターする最短の近道です。
今回の内容を活用して、エクセルでのデータ分析をよりスムーズに進めていただけますと幸いです。