「最頻値を出したら1つしか返ってこないけど、同率1位が他にもあるはず」。そんな経験はありませんか?
MODE関数は最頻値を1つだけ返します。同じ回数の値が複数あっても、最小の値しか表示されません。見落としがあると分析の精度が下がってしまいますよね。
そんなときに使うのがMODE.MULT関数です。スプレッドシートで最頻値が複数ある場合に、すべての最頻値を配列で返してくれます。
この記事では基本の書き方からMODE関数との違い、実務での活用パターンまで紹介します。
スプレッドシートのMODE.MULT関数とは?
MODE.MULT関数(読み方: モード・マルト関数)は、指定した数値の中で最も多く出現する値(最頻値)をすべて返す関数です。「MULT」は「Multiple(複数)」の略です。
MODE関数は最頻値を1つだけ返します。一方MODE.MULT関数は、同じ出現回数の値が複数あればすべて返します。配列関数なので、結果が縦方向に複数セルへ展開されるのが特徴です。
MODE.MULT関数にできることをまとめると、次のとおりです。
- 最頻値が複数あるとき、すべての最頻値を配列で返す
- 結果は縦方向に自動展開される(スピル)
- 最頻値が1つだけの場合は、その1つだけを返す
- 空白セルや文字列は自動的にスキップする
NOTE
MODE.MULT関数はGoogleスプレッドシートの全バージョンで使えます。Excelでも同じ構文で利用できます。
MODE.MULT関数の書き方(構文と引数)
基本構文
=MODE.MULT(値1, [値2, ...])
カッコの中に、最頻値を求めたい数値やセル範囲を指定します。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 値1 | 必須 | 最頻値を求めたい最初の数値、セル参照、またはセル範囲 |
| 値2, … | 任意 | 追加で最頻値に含めたい数値やセル範囲 |
引数が2つ以上ある場合は、カンマ( , )で区切ります。
引数に指定できるものは3種類あります。
- 数値を直接入力:
=MODE.MULT(3, 3, 5, 5, 7)→ 3と5を返す - セル参照:
=MODE.MULT(A1, B1, C1) - セル範囲:
=MODE.MULT(A1:A20)
MODE.MULT関数の基本的な使い方
ここからは実際にMODE.MULT関数を使ってみましょう。
基本パターン: 複数の最頻値を取得する
B2からB11にテストの点数が入っているとします。点数は「70, 80, 80, 85, 85, 90, 90, 75, 60, 95」です。80・85・90がそれぞれ2回ずつ出現していますね。
=MODE.MULT(B2:B11)
結果は縦方向に80、85、90の3つが展開されます。MODE関数だと80しか返りません。MODE.MULT関数ならすべてわかりますよ。
最頻値が1つだけの場合
「70, 80, 80, 80, 85, 90」のように、80が3回で最多のケースを考えます。
=MODE.MULT(B2:B7)
結果は80の1つだけです。最頻値が1つしかない場合、MODE関数と同じ結果になります。
結果の展開先に注意する
MODE.MULT関数は結果を縦方向に展開します。展開先のセルにデータが入っていると#REF!エラーになります。
結果が何個返るかは事前にわかりません。展開先に十分な空きスペースを確保しておきましょう。
実務でのMODE.MULT関数活用パターン
基本がわかったところで、実務でよく出てくるパターンを見ていきましょう。
パターン1: アンケートの同率最多回答を見つける
5段階評価のアンケート結果がB列に入っているとします。
| 回答者 | 評価(1〜5) |
|---|---|
| A | 4 |
| B | 3 |
| C | 4 |
| D | 3 |
| E | 5 |
| F | 4 |
| G | 3 |
| H | 5 |
=MODE.MULT(B2:B9)
「3」と「4」がそれぞれ3回で同率最多です。結果は縦に3、4と展開されます。MODE関数だと「3」しか返りません。「4」も同率で多いという情報を見落とさずに済みますね。
パターン2: 売上データの頻出価格帯を特定する
注文データのB列に商品単価が入っているとします。
| 注文No | 単価(円) |
|---|---|
| 1 | 500 |
| 2 | 1000 |
| 3 | 500 |
| 4 | 1500 |
| 5 | 1000 |
| 6 | 2000 |
| 7 | 1500 |
| 8 | 500 |
| 9 | 1000 |
| 10 | 1500 |
=MODE.MULT(B2:B11)
500・1000・1500がそれぞれ3回で同率です。結果は縦に500、1000、1500と展開されます。よく売れる価格帯が複数あることが一目でわかりますよ。
パターン3: COUNTIFと組み合わせて出現回数も表示する
最頻値だけでなく「何回出現したか」も知りたいことがありますよね。
D2セルにMODE.MULT関数を入力したとします。E2セルに次の数式を入力します。
=COUNTIF(B2:B11, D2)
D列に最頻値、E列にその出現回数が表示されます。複数の最頻値それぞれの回数を確認できますよ。
パターン4: IFERRORでエラーを防ぐ
すべての値が1回ずつしか出現しないと#N/Aエラーになります。IFERROR関数で囲んでおくと安心です。
=IFERROR(MODE.MULT(B2:B10), "最頻値なし")
最頻値がないときは「最頻値なし」と表示されます。
パターン5: UNIQUEやSORT関数と組み合わせる
MODE.MULT関数の結果を整理したいとき、SORT関数と組み合わせると便利です。
=SORT(MODE.MULT(B2:B20))
最頻値を昇順で並べ替えて表示してくれます。結果が多い場合に見やすくなりますよ。
よくあるエラーと対処法
MODE.MULT関数で困ったら、以下のパターンを確認してみてください。
| 症状 | 原因 | 対処法 |
|---|---|---|
| #N/Aエラー | すべての値が1回ずつしか出現しない | IFERRORで囲む。重複データがあるか確認する |
| #REF!エラー | 展開先のセルにデータがある | 展開先のセルを空にする |
| 結果が1つしか返らない | 最頻値が本当に1つだけ | 正常動作。MODE関数と同じ結果になる |
| 文字列が無視される | MODE.MULT関数は数値のみ対応 | 文字列を数値コードに変換してから使う |
| 日付が巨大な数値になる | 日付がシリアル値として計算された | 日付セルは範囲から除外する |
#REF!エラーの対処
MODE.MULT関数で特に多いのが#REF!エラーです。配列の展開先にデータが入っていると発生します。
対処法はシンプルです。関数を入力するセルの下に空きスペースを確保しましょう。余裕をもって空けておくのがおすすめです。
MODE関数・MODE.SNGL関数との違い
MODE.MULT関数と似た関数にMODE関数とMODE.SNGL関数があります。違いを整理しておきましょう。
| 項目 | MODE | MODE.SNGL | MODE.MULT |
|---|---|---|---|
| 返す最頻値の数 | 1つだけ | 1つだけ | すべて |
| 複数の最頻値がある場合 | 最小値を返す | 最小値を返す | すべて返す |
| 結果の形式 | 単一の値 | 単一の値 | 配列(縦方向に展開) |
| 用途 | 代表的な最頻値を1つ知りたい | MODEと同じ | 同率の最頻値をすべて把握したい |
MODEとMODE.SNGLは同じ関数
MODE関数とMODE.SNGL関数は完全に同じ動作です。MODE.SNGLはMODEの別名(エイリアス)です。MODE.MULTとの対比で「Single(1つ)」と明示するために用意されています。
どれを使うべき?
- 最頻値が1つだけほしい → MODE関数で十分
- 同率の最頻値をすべて把握したい → MODE.MULT関数を使う
- 最頻値の有無がわからないデータ → MODE.MULT関数 + IFERRORの組み合わせが安心
迷ったらMODE.MULT関数を使っておけば見落としを防げます。最頻値が1つなら、MODE関数と同じ結果が返るだけですよ。
Excelとの違い
MODE.MULT関数はExcelとGoogleスプレッドシートでほぼ同じ動作です。
| 項目 | Excel | Googleスプレッドシート |
|---|---|---|
| 構文 | =MODE.MULT(数値1, …) | =MODE.MULT(値1, …) |
| 動作 | すべての最頻値を返す | すべての最頻値を返す |
| 結果の展開 | Ctrl+Shift+Enterが必要(古いExcel) | 自動でスピル |
| 空白セル | スキップ | スキップ |
| 文字列セル | スキップ | スキップ |
古いExcel(2019以前)では、Ctrl+Shift+Enterで確定する必要があります。Googleスプレッドシートでは通常のEnterで自動的にスピルします。
まとめ
MODE.MULT関数は、データの最頻値(最も多く出現する値)をすべて返す配列関数です。
ポイントを整理します。
- 構文は
=MODE.MULT(値1, [値2, ...])ですべての最頻値を返す - 結果は縦方向に自動展開される(スピル)
- 最頻値が1つなら、MODE関数と同じ結果になる
- 展開先にデータがあると#REF!エラーになる
- MODE関数とMODE.SNGL関数は最頻値を1つだけ返す
- アンケート集計や価格帯分析で同率を見落とさずに済む
まずは =MODE.MULT(範囲) で複数の最頻値がないか確認してみてください。MODE関数と比べると、同率の値が隠れていたことに気づくかもしれませんよ。
