「MODE.SNGL関数って何? MODE関数と何が違うの?」。関数一覧で見かけて、こんな疑問を持ったことはありませんか?
結論から言うと、MODE.SNGL関数とMODE関数は完全に同じ動作です。ただ、名前が違うだけで混乱しやすいですよね。
この記事ではスプレッドシートのMODE.SNGL関数の基本的な使い方から、MODE関数との関係、MODE.MULT関数との違いまで整理して紹介します。
スプレッドシートのMODE.SNGL関数とは?
MODE.SNGL関数(読み方: モード・シングル関数)は、指定した数値の中で最も多く出現する値(最頻値)を1つ返す関数です。「SNGL」は「Single(単一)」の略です。
実はMODE関数の完全なエイリアス(別名)です。構文も動作も戻り値もすべて同じです。では、なぜ別名が存在するのでしょうか。
理由はMODE.MULT関数との対比です。MODE.MULTが「複数の最頻値をすべて返す」のに対し、MODE.SNGLは「最頻値を1つだけ返す」ことを名前で明示しています。
MODE.SNGL関数にできることをまとめると、次のとおりです。
- 指定したセル範囲で最も多く出現する数値を1つ返す
- 複数の最頻値がある場合は最小の値を返す
- 空白セルや文字列は自動的にスキップする
- MODE関数と完全に同じ結果を返す
NOTE
MODE.SNGL関数はGoogleスプレッドシートの全バージョンで使えます。Excelでも同じ構文で利用できます。
MODE.SNGL関数の書き方(構文と引数)
基本構文
=MODE.SNGL(値1, [値2, ...])
カッコの中に、最頻値を求めたい数値やセル範囲を指定します。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 値1 | 必須 | 最頻値を求めたい最初の数値、セル参照、またはセル範囲 |
| 値2, … | 任意 | 追加で最頻値に含めたい数値やセル範囲 |
引数が2つ以上ある場合は、カンマ( , )で区切ります。
引数に指定できるものは3種類あります。
- 数値を直接入力:
=MODE.SNGL(3, 3, 5, 7)→ 結果は3 - セル参照:
=MODE.SNGL(A1, B1, C1) - セル範囲:
=MODE.SNGL(A1:A10)
MODE.SNGL関数の基本的な使い方
ここからは実際にMODE.SNGL関数を使ってみましょう。
基本パターン: セル範囲の最頻値を求める
B2からB9にテストの点数が入っているとします。点数は「70, 80, 80, 85, 90, 80, 75, 85」です。
=MODE.SNGL(B2:B9)
「80」が3回で最も多いため、結果は80です。
検算: 70(1回), 75(1回), 80(3回), 85(2回), 90(1回)。80が最多ですね。
複数の最頻値がある場合
「70, 80, 80, 90, 90, 85」のように、80と90が同じ回数のケースを考えます。
=MODE.SNGL(B2:B7)
結果は80です。複数の最頻値がある場合、MODE.SNGL関数は最小の値を返します。90ではなく80が返る点に注意してください。
すべての最頻値を確認したい場合はMODE.MULT関数を使いましょう。
離れた範囲をまとめて計算する
複数のセル範囲をカンマで区切って指定できます。
=MODE.SNGL(B2:B10, D2:D10)
B列とD列のデータをまとめて、最頻値を1つ返します。
実務でのMODE.SNGL関数活用パターン
基本がわかったところで、実務でよく出てくるパターンを見ていきましょう。
パターン1: アンケートの最多回答を見つける
5段階評価のアンケート結果がB列に入っているとします。
| 回答者 | 評価(1〜5) |
|---|---|
| A | 4 |
| B | 3 |
| C | 4 |
| D | 5 |
| E | 4 |
| F | 3 |
| G | 4 |
=MODE.SNGL(B2:B8)
結果は4です。「4」が4回で最多だとわかります。
検算: 3(2回), 4(4回), 5(1回)。4が最多ですね。最も選ばれた評価が一発で確認できますよ。
パターン2: 売上データの頻出価格帯を特定する
注文データのB列に商品単価が入っているとします。
| 注文No | 単価(円) |
|---|---|
| 1 | 500 |
| 2 | 1000 |
| 3 | 500 |
| 4 | 1500 |
| 5 | 1000 |
| 6 | 500 |
| 7 | 1500 |
| 8 | 500 |
=MODE.SNGL(B2:B9)
結果は500です。500円が4回で最多です。
検算: 500(4回), 1000(2回), 1500(2回)。500が最多ですね。よく売れる価格帯が一目でわかります。
パターン3: COUNTIFと組み合わせて出現回数も表示する
最頻値だけでなく「何回出現したか」も知りたいことがありますよね。
D2セルにMODE.SNGL関数、E2セルにCOUNTIF関数を入力します。
=MODE.SNGL(B2:B20)
=COUNTIF(B2:B20, D2)
D列に最頻値、E列にその出現回数が表示されます。
パターン4: IFERRORでエラーを防ぐ
すべての値が1回ずつしか出現しないと#N/Aエラーになります。IFERROR関数で囲んでおくと安心です。
=IFERROR(MODE.SNGL(B2:B10), "最頻値なし")
最頻値がないときは「最頻値なし」と表示されます。データが少ない初期段階で役立ちますよ。
パターン5: 来客ピーク時間帯を調べる
B列に来客時間帯(9, 10, 11, …)が記録されているとします。
=MODE.SNGL(B2:B200)
最も来客が多い時間帯が返ります。シフト配置の判断材料にできますね。
よくあるエラーと対処法
MODE.SNGL関数で困ったら、以下のパターンを確認してみてください。
| 症状 | 原因 | 対処法 |
|---|---|---|
| #N/Aエラー | すべての値が1回ずつしか出現しない | IFERRORで囲む。重複データがあるか確認する |
| #N/Aエラー | 範囲にデータが1つもない | 参照範囲にデータが入っているか確認する |
| 想定と違う値が返る | 複数の最頻値があり最小値が返されている | MODE.MULT関数で全最頻値を確認する |
| 文字列が無視される | MODE.SNGL関数は数値のみ対応 | 文字列を数値コードに変換してから使う |
#N/Aエラーの対処
MODE.SNGL関数で最も多いのは#N/Aエラーです。重複する値が1つもないとき発生します。
=IFERROR(MODE.SNGL(B2:B10), "該当なし")
IFERROR関数で囲めば、エラーの代わりに任意のメッセージを表示できますよ。
MODE関数・MODE.MULT関数との違い
MODE.SNGL関数と似た関数にMODE関数とMODE.MULT関数があります。違いを整理しておきましょう。
| 項目 | MODE | MODE.SNGL | MODE.MULT |
|---|---|---|---|
| 返す最頻値の数 | 1つだけ | 1つだけ | すべて |
| 複数の最頻値がある場合 | 最小値を返す | 最小値を返す | すべて返す |
| 結果の形式 | 単一の値 | 単一の値 | 配列(縦方向に展開) |
| 用途 | 代表的な最頻値を知りたい | MODEと同じ | 同率の最頻値をすべて把握したい |
MODEとMODE.SNGLは同じ関数
MODE関数とMODE.SNGL関数は完全に同じ動作です。MODE.SNGLはMODEのエイリアス(別名)にあたります。
「MODE.MULT(複数)」との対比で「Single(1つ)」と明示するために用意されました。どちらを使っても結果は変わりません。
どちらを使うべき?
- 既存のシートに合わせたい → MODEで統一するのがシンプル
- MODE.MULTと併用する → MODE.SNGLを使うと対比が明確になる
- 他の人とシートを共有する → MODEのほうが認知度が高い
迷ったらMODE関数で問題ありません。MODE.MULTと並べて使う場面ではMODE.SNGLを選ぶと読みやすくなりますよ。
MODE.MULTとの使い分け
- 最頻値が1つだけほしい → MODE.SNGL(またはMODE)で十分
- 同率の最頻値をすべて把握したい → MODE.MULT関数を使う
- 最頻値の有無がわからない → MODE.MULT + IFERRORの組み合わせが安心
まとめ
MODE.SNGL関数は、データの最頻値(最も多く出現する値)を1つ返す関数です。
ポイントを整理します。
- 構文は
=MODE.SNGL(値1, [値2, ...])で最頻値を1つ返す - MODE関数と完全に同じ動作(エイリアス)
- 複数の最頻値がある場合は最小値が返される
- すべてのデータが一意だと#N/Aエラーになる
- MODE.MULT関数と併用するときに名前の対比がわかりやすい
- アンケート集計や価格帯分析で活用できる
まずは =MODE.SNGL(範囲) でデータの最頻値を確認してみてください。MODE.MULT関数と結果を比べると、同率の値が隠れていたことに気づくかもしれませんよ。
