【Excel】MODE.MULT関数の使い方|最頻値が複数あるときに全部取り出す配列関数

スポンサーリンク

社内アンケートを集計していて「最も多かった回答」を出そうとしたら、同じ票数のものが2つも3つもあった。そんなとき、普通の最頻値関数だと1つしか返ってこなくて困った経験はないでしょうか。

そこで活躍するのが MODE.MULT関数 です。同率1位の最頻値をすべて配列としてまとめて返してくれるので、「同点トップが複数あるケース」も漏らさず取得できます。

この記事では、MODE.MULT関数の構文から、CSE入力と動的配列スピルの違い、MODE.SNGLとの使い分け、よくあるエラーの読み解き方までを実例で整理します。

ExcelのMODE.MULT関数とは?

ExcelのMODE.MULT関数(読み方:モード・マルト)は、データセットの中で最も頻繁に出現する数値(最頻値)を、複数まとめて配列で返す関数です。関数名は「MODE(最頻値)+MULTiple(複数)」の組み合わせで、「複数の最頻値」を意味します。

通常の最頻値関数(MODEやMODE.SNGL)は、同じ最高頻度の値が複数あっても 最初に見つかった1つだけ を返します。一方MODE.MULTは、同率1位の値を すべて配列として返す のが最大の特徴です。

たとえば 1, 2, 3, 3, 4, 5, 5 というデータでは、3も5も2回ずつ登場します。MODE.SNGLでは「3」だけが返りますが、MODE.MULTを使えば「3」と「5」の両方を取得できます。

NOTE

MODE.MULTはExcel 2010で追加された関数です。それ以前のExcelには存在せず、後継関数として登場しました。Excel 2010以降であれば、Mac版・Windows版を問わず利用できます。

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

MODE.MULT関数の構文は次のとおりです。

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

引数の仕様は次の表にまとめました。

引数必須説明
数値1必須最頻値を求めたい1つ目の数値またはセル範囲
数値2, …任意2つ目以降の数値またはセル範囲(最大254個まで指定可)

戻り値は 縦方向の配列 です。同率最頻値の個数だけ縦に値が並び、選択範囲が余ったセルには #N/A が表示されます。これは「ここまでで最頻値は出尽くしました」というサインで、エラーではなく正常動作です。

引数に指定したセルのうち、テキスト・論理値・空白セルは無視されます。ただし数値の 0(ゼロ) はカウント対象になる点に注意してください。

MODE.SNGLとの違いを早見表で整理

「最頻値を返す関数」は3種類あります。それぞれの違いを整理しておきましょう。

比較項目MODEMODE.SNGLMODE.MULT
戻り値1つ1つ複数(配列)
同頻度の値が複数あるとき最初に現れた値のみ最初に現れた値のみすべて返す
入力方法通常Enter通常EnterCSE または通常Enter(スピル対応版)
関数の分類互換性関数統計関数統計関数
導入時期Excel 2007以前Excel 2010以降Excel 2010以降

TIP

「同率最多が出るかもしれない」場合はMODE.MULT、「最頻値は1つで十分」な場合は MODE.SNGL関数 を選ぶのが基本です。MODE.SNGLは1つしか返ってこないため、同率最多の見落としに気づけないリスクがあります。

実務例:アンケート評価点の同率最多回答を全部取得する

社員研修の満足度アンケート(5段階評価)を集計するシーンで考えてみます。10人の回答が次のように集まりました。

回答者評価点
田中5
佐藤4
鈴木5
高橋3
伊藤4
渡辺5
山本4
中村2
小林4
加藤5

評価点が B2:B11 に入っているとします。最頻値を求めると、4点が4回、5点も4回登場しており、同率1位という状況です。

Microsoft 365 / Excel 2021以降の場合(動的配列スピル)

任意のセル(たとえば D2)に通常通り入力するだけです。

=MODE.MULT(B2:B11)

Enterを押すと、D2に「4」、D3に「5」が 自動でスピル展開 されます。範囲をあらかじめ選択する必要はありません。

Excel 2019以前の場合(CSE入力)

「同率最多が何個出るか」が事前に分からないので、念のため数個ぶんのセル(たとえば D2:D6)を縦に選択しておきます。続けて数式バーに次の数式を入力します。

=MODE.MULT(B2:B11)

そのまま Ctrl + Shift + Enter を押すと、配列数式として確定されます。数式バーには {=MODE.MULT(B2:B11)} と中括弧が付き、選択範囲に「4」「5」「#N/A」「#N/A」「#N/A」のように展開されます。

WARNING

Excel 2019以前で通常のEnterで確定すると、最初の1つ(この例では「4」)だけが表示され、残りの最頻値が取得できません。古いExcelで使うときは必ず Ctrl + Shift + Enter で確定してください。

CSE入力と動的配列スピルの違い

MODE.MULTの入力方法は、Excelのバージョンによって2通りに分かれます。

項目CSE入力(旧来Excel)動的配列スピル(新Excel)
対象バージョンExcel 2010〜2019Microsoft 365、Excel 2021以降
入力範囲事前にセル範囲を選択単一セルに入力するだけ
確定キーCtrl + Shift + Enter通常のEnter
数式表示{=MODE.MULT(...)}=MODE.MULT(...)
結果が増減した場合範囲を再指定して再入力自動的に縮小・拡大

新しい動的配列スピルのほうが圧倒的に扱いやすいです。Microsoft 365をお使いの方は、結果が何個になるかを気にせず1セルに入力するだけで済みます。

NOTE

スピル展開時、隣接セルにすでにデータが入っていると #SPILL! エラーになります。スピル先のセル(この例ではD3以降)が空であることを確認してから入力してください。

#N/Aエラーが返る2つのパターン

MODE.MULT関数を使うと #N/A エラーをよく目にします。これには2つのパターンがあり、意味がまったく違うので区別しておきましょう。

パターン1:余ったセルに表示される #N/A(正常動作)

CSE入力で5セル選択したけれど、実際に最頻値が2つしかなかった場合、3〜5番目のセルには #N/A が表示されます。これは「これ以上の最頻値はありません」という終端マーカーで、エラーではなく正常動作です。

パターン2:すべてのセルに #N/A が表示される(重複なし)

データセットに重複する値が1つもない(全員バラバラ)場合、最頻値そのものが定義できないため、すべてのセルに #N/A が返ります。これは仕様上の動作で、データ側の特性を示しています。

TIP

パターン2が表示されたら「データに重複がないので最頻値が存在しない」と読み替えましょう。エラーを隠したい場合は =IFERROR(MODE.MULT(範囲), "重複なし") で文字列に置き換えられます。

よくあるエラーと対処法

エラー原因対処法
#N/A(余りセル)最頻値がそれ以上ない正常動作。範囲を狭めるかIFERRORで非表示
#N/A(全セル)データに重複値が一つもないデータ側を確認。IFERRORで代替表示
#VALUE!範囲内に文字化けや特殊な値がある範囲内の値が数値であることを確認
#SPILL!スピル先のセルにデータが入っているスピル先のセルを空にする
#NAME?Excel 2007以前で実行しているExcel 2010以降を使うか、MODE関数で代替

特に多いのが #SPILL! です。動的配列スピル対応のExcelで MODE.MULT を1セルに入れたとき、隣接セルが埋まっていると展開できません。表組みの中で使うときは、結果が広がる方向のセルを空けておきましょう。

関連する最頻値・統計関数

中心傾向や頻度の分析では、MODE系のほかにもいくつか関数を組み合わせて使うと便利です。

関数役割
MODE.SNGL最頻値を1つだけ返す(同率最多があっても最小値を返す)
MODE旧来の最頻値関数(互換性関数。新規利用は MODE.SNGL を推奨)
AVERAGE算術平均を求める
MEDIAN中央値を求める
COUNTIF特定の値の出現回数をカウント
FREQUENCY度数分布を求める

最頻値を出した後に「その値が何件あるのか」を数えたい場合は COUNTIF関数 と組み合わせると便利です。

まとめ

ExcelのMODE.MULT関数は、最頻値が複数あるケースを漏らさず抽出できる配列関数です。要点を整理しておきます。

  • 構文: =MODE.MULT(数値1, [数値2], ...)
  • 戻り値: 縦方向の配列(同率最頻値をすべて含む)
  • Microsoft 365 / Excel 2021以降: 通常Enterで自動スピル展開
  • Excel 2019以前: 範囲を選択して Ctrl + Shift + Enter(CSE)
  • 余りセルの #N/A は正常動作(最頻値の終端マーカー)
  • 全セル #N/A はデータに重複がない ことを示す

アンケート集計で「同率1位の回答を全部出したい」場面や、製品評価で「同じ得票数のレビュー点を全部取り出したい」場面では、MODE.MULTがそのまま答えを返してくれます。1つだけ取得したい場合は MODE.SNGL関数 と使い分けましょう。

中心傾向の3指標である AVERAGE関数MEDIAN関数、MODE.MULT/MODE.SNGLを揃えて使えるようになると、データの「真ん中」を多角的に捉えられるようになります。

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