スプレッドシートのMODE関数の使い方|最頻値

スポンサーリンク

「アンケートで一番多い回答はどれだろう?」。集計するとき、こんな疑問が浮かびませんか?

平均値や中央値ではなく、「最も多く選ばれた値」を知りたい場面は意外と多いものです。手作業で数えるのは面倒ですし、データが増えると見落としも起きがちですよね。

そんなときに使うのがMODE関数です。スプレッドシートで指定した範囲の最頻値(最も多く出現する値)を一発で返してくれます。

この記事では基本の書き方から実務での活用パターンまで紹介します。

スプレッドシートのMODE関数とは?

MODE関数(読み方: モード関数)は、指定した数値の中で最も多く出現する値(最頻値)を返す関数です。「Mode」は英語で「最頻値」や「流行」を意味します。

最頻値とは、データの中で出現回数がいちばん多い値のことです。AVERAGE関数の平均値、MEDIAN関数の中央値と並び、データの代表値としてよく使われます。

MODE関数にできることをまとめると、次のとおりです。

  • 指定したセル範囲で最も多く出現する数値を返す
  • 複数の離れた範囲をまとめて最頻値を求める
  • 空白セルや文字列は自動的にスキップする
  • アンケートやサイズ集計でよく使われる

NOTE

MODE関数はGoogleスプレッドシートの全バージョンで使えます。なお、MODE.SNGL関数はMODE関数の完全なエイリアス(別名)で、動作は同じです。

MODE関数の書き方(構文と引数)

基本構文

=MODE(値1, [値2, ...])

カッコの中に、最頻値を求めたい数値やセル範囲を指定します。

引数の説明

引数必須/任意説明
値1必須最頻値を求めたい最初の数値、セル参照、またはセル範囲
値2, …任意追加で最頻値に含めたい数値やセル範囲(最大30個まで)

引数が2つ以上ある場合は、カンマ( , )で区切ります。

引数に指定できるものは3種類あります。

  • 数値を直接入力: =MODE(3, 3, 5, 7) → 結果は3
  • セル参照: =MODE(A1, B1, C1) → 各セルの値の最頻値
  • セル範囲: =MODE(A1:A10) → A1からA10の最頻値

MODE関数の基本的な使い方

ここからは実際にMODE関数を使ってみましょう。

基本パターン: セル範囲の最頻値を求める

B2からB10にテストの点数が入っているとします。点数は「70, 80, 80, 85, 90, 80, 75, 85, 90」です。

01 data sample table
=MODE(B2:B10)
02 formula mode basic

「80」が3回で最も多いため、結果は80です。

03 result mode basic

複数の最頻値がある場合

「70, 80, 80, 90, 90」のように、80と90が同じ回数のケースを考えます。

=MODE(B2:B6)

結果は80です。複数の最頻値がある場合、MODE関数は最小の値を返します。90ではなく80が返る点に注意してください。

04 result mode multiple

すべての最頻値を取得したいとき

MODE.MULT関数を使うと、複数の最頻値をすべて配列で返せます。=MODE.MULT(B2:B10) のように書きます。

複数の範囲をまとめて最頻値を求める

離れた範囲を1つにまとめることもできます。

=MODE(B2:B10, D2:D10)

カンマで区切るだけで、離れた範囲も一度に計算してくれます。

実務でのMODE関数活用パターン

基本がわかったところで、実務でよく出てくるパターンを見ていきましょう。

パターン1: アンケートの最多回答を見つける

5段階評価のアンケート結果がB列に入っているとします。

回答者評価(1〜5)
A4
B3
C4
D5
E4
F3
G4
=MODE(B2:B8)

結果は4です。「4」が4回で最多だとわかります。「最も選ばれた評価は何点か」を一発で確認できますよ。

パターン2: 売れ筋サイズを特定する

注文データから最も売れているサイズを調べます。B列にサイズ(S=1, M=2, L=3, XL=4)が数値で入っているとします。

=MODE(B2:B100)

結果が「2」ならMサイズが最も売れています。在庫の発注判断に使えますね。

パターン3: 時間帯別の来客ピークを調べる

B列に来客時間帯(9, 10, 11, …)が記録されているとします。

=MODE(B2:B200)

最も来客が多い時間帯が返ります。シフト配置の参考になります。

パターン4: IFERRORでエラーを防ぐ

MODE関数は、すべての値が1回ずつしか出現しないと#N/Aエラーを返します。

=IFERROR(MODE(B2:B10), "最頻値なし")

最頻値がないときは「最頻値なし」と表示します。データが入る前の段階でも安心です。

パターン5: COUNTIFと組み合わせて出現回数も表示する

最頻値だけでなく「何回出現したか」も知りたいことがありますよね。

=MODE(B2:B20)
=COUNTIF(B2:B20, MODE(B2:B20))

1つ目のセルに最頻値、2つ目のセルにその出現回数が表示されます。

よくあるエラーと対処法

MODE関数で困ったら、以下のパターンを確認してみてください。

症状原因対処法
#N/Aエラーすべての値が1回ずつしか出現しないIFERRORで囲む。重複データがあるか確認する
#N/Aエラー範囲にデータが1つもない参照範囲にデータが入っているか確認する
想定と違う値が返る複数の最頻値があり最小値が返されているMODE.MULT関数で全最頻値を確認する
文字列が無視されるMODE関数は数値のみ対応文字列を数値コードに変換してから使う
日付が巨大な数値になる日付がシリアル値として計算された日付セルは範囲から除外する

#N/Aエラーの対処

MODE関数で最も多いのは#N/Aエラーです。すべてのデータが一意(重複なし)のとき発生します。

05 error na
=IFERROR(MODE(B2:B10), "該当なし")

IFERROR関数で囲めば、エラーの代わりに任意のメッセージを表示できます。

MODE関数が適さないケース

MODE関数はすべてのデータに使えるわけではありません。

  • すべての値が一意: 最頻値が存在しないため#N/Aになる
  • 連続値(小数を含む測定値など): 同じ値が出にくく最頻値が意味をなさない
  • テキストデータ: MODE関数は数値のみ対応

これらの場合はCOUNTIF関数で出現回数を数えるほうが適しています。

AVERAGE・MEDIAN・MODEの3つの代表値を比較

統計で「代表値」と呼ばれる3つの指標を比較します。どれを使うかで分析結果が変わるため、特徴を押さえておきましょう。

項目AVERAGE(平均値)MEDIAN(中央値)MODE(最頻値)
計算方法合計 / 個数並べたとき真ん中の値最も多く出現する値
外れ値の影響大きく受ける受けにくい受けにくい
向いているデータ偏りが少ない均質なデータ外れ値を含むデータカテゴリ的・離散的なデータ
具体例テストの平均点給与の実態把握アンケートの最多回答
エラー条件数値が0個で#DIV/0!数値が0個で#NUM!重複なしで#N/A

具体例で比べてみよう

7人のテスト点数「60, 70, 80, 80, 80, 90, 100」で比較します。

=AVERAGE(B2:B8)

平均値は80です。

=MEDIAN(B2:B8)

中央値は80です。真ん中(4番目)の値ですね。

=MODE(B2:B8)

最頻値は80です。3回出現で最多です。

この例ではたまたま3つとも同じ値になります。しかしデータに偏りがあると結果は大きく変わります。

データに偏りがある場合

5人の月収データ「25万, 25万, 25万, 30万, 150万」で比較します。

=AVERAGE(B2:B6)    → 51万
=MEDIAN(B2:B6)     → 25万
=MODE(B2:B6)       → 25万

平均値は150万に引っ張られて51万です。中央値と最頻値は25万で、実態に近い値が出ています。

どれを使うか迷ったら

均質なデータ: AVERAGE関数が適切
外れ値があるデータ: MEDIAN関数が安定
「最も多い値」を知りたい: MODE関数が最適
判断に迷うとき: 3つとも出して比較するのがおすすめ

よくある質問(FAQ)

Q. MODE関数とMODE.SNGL関数は同じ?

A. はい、まったく同じです。MODE.SNGL はExcelとの互換性を高めるために追加されたエイリアスで、動作・引数は MODE 関数と変わりません。どちらを使っても結果は同じです。

Q. 文字列データの最頻値は求められる?

A. MODE関数は数値のみ対応しているため、文字列は無視されます。文字列の最頻値を求めたい場合はCOUNTIF関数で出現回数を数えるか、文字列を数値コードに変換してから使う方法があります。

Q. MODE.MULTとMODEの違いは?

A. MODE関数は最頻値が複数あるときに「最小値の1つだけ」を返します。MODE.MULT関数はすべての最頻値を配列で返します。「2番目に多い値も知りたい」ときはMODE.MULTを使いましょう。

Q. 条件を指定して最頻値を求めることはできる?

A. MODE関数単体では条件指定ができませんが、INDEX(範囲, MATCH(MAX(COUNTIFS(...)), COUNTIFS(...), 0)) の組み合わせで条件付き最頻値を求められます。詳しくは「条件付きで最頻値を求める」セクションをご覧ください。

Q. 文字列(テキスト)の最頻値を求めるには?

A. MODE関数は数値専用のため文字列には対応していません。テキストの最頻値は INDEX(範囲, MATCH(MAX(COUNTIF(範囲, 範囲)), COUNTIF(範囲, 範囲), 0)) という式で求められます。「テキストデータの最頻値を求める」セクションに具体例があります。

Excelとの違い

MODE関数はExcelとGoogleスプレッドシートでほぼ同じ動作です。

項目ExcelGoogleスプレッドシート
構文=MODE(数値1, …)=MODE(値1, …)
動作最頻値を返す最頻値を返す
引数上限最大255個最大30個
空白セルスキップスキップ
文字列セルスキップスキップ
複数最頻値の扱い最小値を返す最小値を返す
MODE.MULT対応対応

引数の上限数が異なりますが、セル範囲を使えば問題ありません。Excelと同じ感覚で使えます。

MODE.MULT関数で複数の最頻値をすべて取得する

MODE関数は最頻値が複数あるとき「最小値だけ」を返しますが、すべての最頻値を取り出したいときはMODE.MULT関数を使います。

書き方

=MODE.MULT(値1, [値2, ...])

結果は配列で返るため、複数のセルに展開して表示されます。

具体例

「70, 80, 80, 90, 90, 95」というデータで試します。

=MODE.MULT(B2:B7)

80と90が同じ出現回数(2回ずつ)のため、結果は 80、90 の2つが返ります。

出力先セル結果
C280
C390

TIP

MODE.MULTを使う場合は、結果を受け取る分だけのセルをあらかじめ確保しておきましょう。結果の個数がわからないときはIFERRORと組み合わせると安全です。

最頻値が何種類あるかを確認する方法

最頻値の個数を数えたいときは次の式が便利です。

=SUMPRODUCT((COUNTIF(B2:B10, B2:B10)=MAX(COUNTIF(B2:B10, B2:B10)))/COUNTIF(B2:B10, B2:B10))

この式は「最大出現回数と等しい値の種類数」を返します。結果が1なら最頻値は1つ、2以上なら複数あります。

条件付きで最頻値を求める(COUNTIFS+MATCHの活用)

「男性回答者だけ」「特定の部署だけ」など、条件を絞って最頻値を求めたい場面があります。残念ながらMODE関数はIF条件を直接受け付けません。そのため、COUNTIFSとMATCHを組み合わせた方法を使います。

構成のイメージ

A列に部門名、B列に評価スコア(1〜5)が入っているとします。「営業部だけの最頻スコア」を求めるケースで解説します。

COUNTIFS+MATCHで条件付き最頻値を求める式

=INDEX(B2:B20, MATCH(MAX(COUNTIFS(A2:A20, "営業部", B2:B20, B2:B20)), COUNTIFS(A2:A20, "営業部", B2:B20, B2:B20), 0))

式の読み方:

  1. COUNTIFS(A2:A20, "営業部", B2:B20, B2:B20) — 部門が「営業部」かつ各スコアと同じ値が何件あるかをB列の各行で数える
  2. MAX(...) — その中で最大の出現回数を取得
  3. MATCH(MAX(...), ..., 0) — 最大出現回数が最初に現れる行位置を特定
  4. INDEX(B2:B20, ...) — その位置のスコアを返す

NOTE

この式は「最初に見つかった最頻値」を返します。同じ出現回数の値が複数ある場合は、リスト上で最初に登場した値が返ります。

実際の入力例

A列(部門)B列(評価)
2営業部4
3総務部3
4営業部5
5営業部4
6総務部4
7営業部4

上の式を使うと、営業部の評価スコアは「4, 5, 4, 4」なので、最頻値として 4 が返ります。

テキストデータの最頻値を求める(COUNTIFを活用)

MODE関数は数値専用のため、「”男性”・”女性”」「”東京”・”大阪”・”名古屋”」などの文字列データには使えません。テキストの最頻値を求めるには、INDEXとMATCH、COUNTIFを組み合わせます。

基本の式(テキスト最頻値)

=INDEX(A2:A10, MATCH(MAX(COUNTIF(A2:A10, A2:A10)), COUNTIF(A2:A10, A2:A10), 0))

式の読み方:

  1. COUNTIF(A2:A10, A2:A10) — 各セルの値がA列全体に何回出現するかを配列で計算
  2. MAX(...) — 最大の出現回数を取得
  3. MATCH(MAX(...), ..., 0) — 最大出現回数と一致する最初の行位置を特定
  4. INDEX(A2:A10, ...) — その行位置のテキストを返す

具体例

A列(回答)
2東京
3大阪
4東京
5名古屋
6東京
7大阪
=INDEX(A2:A7, MATCH(MAX(COUNTIF(A2:A7, A2:A7)), COUNTIF(A2:A7, A2:A7), 0))

「東京」が3回で最多のため、結果は 東京 です。

出現回数と一緒に表示する

最頻テキストが何回出現したかも合わせて表示するには、2つのセルに分けて記述します。

=INDEX(A2:A10, MATCH(MAX(COUNTIF(A2:A10, A2:A10)), COUNTIF(A2:A10, A2:A10), 0))
=COUNTIF(A2:A10, C2)  ← C2に最頻テキストの結果が入っている場合

アンケートの自由回答を整理したり、不良品の発生パターン(「傷あり」「変形」「欠品」など)を集計したりする場面で役立ちます。

NOTE

テキストの大文字・小文字は区別されません(例:「Tokyo」と「tokyo」は同じと見なされます)。

まとめ

MODE関数は、データの最頻値(最も多く出現する値)を求める関数です。

ポイントを整理します。

  • 構文は =MODE(値1, [値2, ...]) で最頻値を返す
  • 数値のみ対応。文字列や空白は自動スキップ
  • 複数の最頻値がある場合は最小値が返される
  • すべてのデータが一意だと#N/Aエラーになる
  • IFERRORと組み合わせればエラーを回避できる
  • アンケート集計やサイズ分析など離散データに向いている

まずは =MODE(範囲) でデータの最頻値を確認するところから試してみてください。AVERAGE関数MEDIAN関数と並べて比較すると、データの特徴が見えてきますよ。


この記事で紹介した関数・関連記事

タイトルとURLをコピーしました