エクセルでデータの集計を行う際、平均値(AVERAGE)と並んで重要なのが中央値(MEDIAN)です。平均値は極端な数値に影響を受けやすいため、より実態に近い数値を把握するために中央値が重宝されます。しかし、特定の条件に一致するデータだけを対象に中央値を求める「MEDIANIF」のような専用の関数は、残念ながらエクセルには用意されていません。
そのため、条件付きで中央値を算出するには、複数の関数を組み合わせる工夫が必要になります。「特定の部署だけの給与の中央値を知りたい」「特定の期間内における売上の中央値を計算したい」といった場面で、どうすればスムーズに算出できるのか悩んでいる方も多いのではないでしょうか。
この記事では、中央値をエクセルで条件付きで算出するための具体的なテクニックを分かりやすく解説します。最新のExcel 365や2021で使える便利な方法から、従来のバージョンでも利用できる配列数式の使い方、さらに複数条件を指定する方法まで網羅しています。この記事を読めば、データの偏りに惑わされない正確な分析ができるようになるはずです。
中央値をエクセルで条件付きで算出するための基本の考え方

エクセルで「条件付きの計算」を行う場合、SUMIF関数やAVERAGEIF関数のように、最初から条件指定ができる関数を思い浮かべる方が多いでしょう。しかし、中央値を求めるMEDIAN関数には、標準で条件を付ける機能が備わっていません。ここでは、なぜ工夫が必要なのか、そしてどのような論理で条件付きの中央値を導き出すのか、基本の仕組みを解説します。
MEDIAN関数とIF関数を組み合わせる理由
中央値を求めるためのMEDIAN関数は、指定された範囲内にある数値の「真ん中の値」を返すシンプルな関数です。引数には数値やセル範囲を指定するだけで、その中に含まれるデータ全体を対象に計算を行います。しかし、実務では「特定のカテゴリに属するデータだけ」を抽出して計算したいケースが多々あります。
エクセルには「MEDIANIF」という関数が存在しないため、IF関数を使って「条件に一致するデータのみのリスト」を仮想的に作成し、それをMEDIAN関数に渡すという手順を踏む必要があります。IF関数で条件に合わないデータを「偽(FALSE)」として除外することで、残った数値だけを使って中央値を算出できるのです。
この考え方は、他の「IF系」の関数が内部で行っている処理を、自分で手動で構築するようなイメージです。一見複雑そうに思えるかもしれませんが、仕組みさえ理解してしまえば、他の様々な集計にも応用できる非常に強力なテクニックとなります。
配列数式(CSE数式)の基礎知識
従来のExcel(2019以前)で条件付きの中央値を求める場合、「配列数式」という特殊な計算方法を使う必要があります。配列数式とは、複数のセルにまたがるデータを一括で処理するための仕組みです。通常、IF関数は1つのセルの値を判定しますが、配列数式として入力することで、範囲全体に対して一気に判定を行えるようになります。
配列数式を確定させるには、数式を入力した後に「Enter」キーだけを押すのではなく、「Ctrl」キーと「Shift」キーを押しながら「Enter」キーを押す必要があります。この操作を行うと、数式が中括弧「{ }」で囲まれ、範囲内の各要素に対してIF文が適用されるようになります。これが通称「CSE数式」と呼ばれるものです。
最新のExcel(365や2021以降)では、「スピル」という機能が導入されたため、この複雑なキー操作を意識しなくても自動的に配列として処理されるようになりました。しかし、古いバージョンのファイルを扱う場合や、職場の環境によってはこの知識が必須となるため、基本として覚えておくと安心です。
中央値と平均値の使い分けの重要性
そもそも、なぜ平均値ではなく中央値を条件付きで求める必要があるのでしょうか。それは、データの中に「外れ値」と呼ばれる極端に大きな値や小さな値が含まれている場合、平均値は実態とかけ離れてしまうからです。例えば、社員の年収を集計する際、1人だけ数億円の年収があると、平均値は大幅に引き上げられてしまいます。
このような場合、中央値を求めることで「データを並べたときにちょうど真ん中にくる人の値」が分かり、一般的な感覚に近い数値を導き出せます。条件付きで中央値を求められるようになると、「若手社員だけの年収中央値」や「特定地域における家賃の中央値」など、より精度の高い分析が可能になります。
特にビジネスの現場では、一部の成功事例が平均を押し上げていることが多いため、条件付き中央値の算出スキルは、現状を正しく把握するための武器になります。数値の罠にはまらないためにも、このテクニックをマスターしていきましょう。
Excel 365や2021で使える「FILTER関数」を活用した算出法

最新のエクセル環境を利用している方にとって、最も簡単で分かりやすいのがFILTER関数を活用する方法です。従来の配列数式のような難解さがなく、直感的に条件付きの中央値を求めることができます。ここでは、最新機能を使ったスマートな解決策について具体的に説明します。
FILTER関数を組み合わせてスマートに計算する
Excel 365や2021で追加されたFILTER関数は、指定した条件に基づいてデータ範囲から必要な行だけを抽出してくれる非常に便利な関数です。この関数をMEDIAN関数の内側に組み込むことで、驚くほど簡単に条件付きの中央値を算出できます。数式の構造は非常にシンプルで、可読性が高いのが特徴です。
【基本の数式】
=MEDIAN(FILTER(数値範囲, 条件範囲=”条件”))
この数式の仕組みは、まずFILTER関数が「条件に一致する数値」だけを抜き出し、その抜き出されたリストに対してMEDIAN関数が中央値を計算するという流れになっています。以前のような「Ctrl + Shift + Enter」の操作も不要で、数式の修正も容易です。今後のエクセル操作のスタンダードになる方法と言えるでしょう。
FILTER関数を使うメリットと注意点
FILTER関数を使う最大のメリットは、数式の意味が理解しやすい点です。「数値をフィルタリングして、その中央値を出す」という言葉通りの構成になっているため、後で数式を見返したときや、他の人に共有したときに混乱が生じにくいです。また、条件に一致するデータがない場合にエラーを回避する設定も容易に行えます。
注意点としては、この関数が比較的新しい機能であるため、古いバージョンのエクセル(Excel 2019以前)でファイルを開くとエラーになってしまうことです。自分だけで使うファイルなら問題ありませんが、不特定多数に配布する資料を作成する場合は、相手の環境を確認しておく必要があります。
また、FILTER関数の引数である「条件」の部分は、柔軟に記述することが可能です。例えば「100以上の数値」なら「範囲>=100」のように比較演算子を使えます。この柔軟性を活かすことで、単純な一致だけでなく、より高度な条件設定を組み込むことが可能になります。
実際にFILTER関数で中央値を求める手順
具体的な例を挙げて手順を確認してみましょう。例えば、A列に「商品名」、B列に「販売価格」が並んでいる表から、「りんご」の販売価格の中央値を求めたいとします。この場合、数式は「=MEDIAN(FILTER(B2:B100, A2:A100=”りんご”))」となります。
まず、FILTER関数がA列をチェックし、”りんご”と入力されている行のB列の値だけを集めます。次に、その集まった価格リストをMEDIAN関数が受け取り、中央値を算出します。結果は一つのセルに表示され、もし途中で元データの価格が変更されても、即座に中央値が再計算されます。
従来のバージョンでも可能!IF関数を使った配列数式の作り方

Excel 2019以前のバージョンを使用している場合や、互換性を重視する場合は、MEDIAN関数とIF関数を組み合わせた「配列数式」を使用します。最新版でもこの方法は有効であり、古くから使われている王道の手法です。ここでは、配列数式の具体的な書き方と入力のコツを丁寧に解説します。
IF関数をMEDIANの中に入れ込む数式の構造
配列数式を使った条件付き中央値の算出では、IF関数をMEDIAN関数の引数として記述します。考え方はFILTER関数と似ていますが、記述方法に独特のルールがあります。もっとも一般的な形は以下の通りです。
【配列数式の基本形】
=MEDIAN(IF(条件範囲=”条件”, 数値範囲))
この数式の中で、IF関数は「条件に合う場合は数値を返し、合わない場合はFALSE(偽)を返す」という動作を範囲内のすべてのセルに対して行います。MEDIAN関数は数値のみを対象とし、論理値(TRUEやFALSE)を無視する性質を持っているため、結果として条件に一致した数値だけの中央値が計算される仕組みです。
入力時の最重要ルール「Ctrl + Shift + Enter」
この手法において最も注意しなければならないのが、入力の確定方法です。数式をセルに入力した後、そのまま「Enter」だけを押してしまうと、正しい結果が得られなかったり、「#VALUE!」エラーが表示されたりします。必ず「Ctrl」キーと「Shift」キーを押しながら「Enter」キーを押してください。
正しく入力ができると、数式バーに表示されている式が「{=MEDIAN(IF(A2:A10=”A”, B2:B10))}」のように、全体が中括弧で囲まれます。この中括弧は自分で入力するのではなく、ショートカットキーによって自動的に付与されるものです。数式を編集するたびに、この確定操作が必要になることも覚えておきましょう。
もし最新版のExcel 365などを使用している場合は、この操作をしなくても自動的に「スピル」機能が働いて計算が行われます。しかし、古いエクセルとの互換性を保ちたい場合は、この形式で入力しておくと安心です。意図しない計算ミスを防ぐためにも、自分の使っているエクセルの動作を確認しておきましょう。
配列数式での条件指定のコツ
配列数式でIF関数を使う際、条件に一致しない場合の「偽の場合の値」を省略するのが一般的です。省略すると自動的に「FALSE」という値が入ります。MEDIAN関数はこの「FALSE」を計算対象から完全に除外してくれるため、都合が良いのです。
逆に、ここで誤って「IF(条件, 数値, 0)」のように、偽の場合に「0」を返すように設定してしまうと、本来計算に含めたくない「0」がデータとして加わってしまい、中央値が不当に低くなってしまいます。条件に合わないデータを計算に入れないためには、「偽の場合」は何も書かずに省略するのが鉄則です。
この小さな違いが計算結果に大きな影響を与えます。特にデータ量が多い場合、間違いに気づきにくいため注意が必要です。集計の目的はあくまで「特定の条件に絞った中央値」を出すことなので、不要なデータが混ざらないよう、数式の構成を慎重に確認しましょう。
複数条件を指定して中央値を算出する高度なテクニック

「東京支店の」「4月の」「売上」の中央値を出したいといったように、条件が1つではなく複数ある場合も多いでしょう。中央値の複数条件指定は、少し工夫するだけで対応可能です。ここでは、条件を重ねるための2つの代表的なアプローチを紹介します。
IF関数をネスト(入れ子)にして複数条件を作る
最も直感的な方法は、IF関数の内側にさらにIF関数を重ねる「ネスト」という手法です。1つ目のIF関数で「条件A」を判定し、その中にある2つ目のIF関数で「条件B」を判定します。これにより、両方の条件をクリアしたデータだけがMEDIAN関数に渡されるようになります。
【ネストを使った数式(配列数式として入力)】
=MEDIAN(IF(条件範囲1=”条件A”, IF(条件範囲2=”条件B”, 数値範囲)))
この方法のメリットは、条件を順番に整理して記述できるため、後から条件を追加しやすい点です。ただし、条件が増えすぎると数式が非常に長くなり、括弧の対応関係が分かりにくくなる「ネストの罠」に陥りやすいため、3つ程度の条件までに留めておくのが無難でしょう。
論理積(掛け算)を利用してスマートに記述する
複数の条件をよりスッキリと記述したい場合は、条件同士を「*(アスタリスク)」でつなぐ方法がおすすめです。エクセルでは、論理値のTRUEを「1」、FALSEを「0」として扱う性質があります。複数の条件を掛け合わせることで、すべてを満たす(1×1)場合のみ「1」となり、一つでも満たさない(1×0や0×1)場合は「0」となります。
これを利用した数式は以下のようになります。この書き方は、特にFILTER関数と組み合わせるときに非常に強力な力を発揮します。
【掛け算を使った数式(Excel 365/2021向け)】
=MEDIAN(FILTER(数値範囲, (条件範囲1=”条件A”) * (条件範囲2=”条件B”)))
この方法であれば、条件が4つ、5つと増えても数式があまり複雑化せず、視認性を保つことができます。最新のエクセルを使っている環境であれば、ネストよりもこちらの書き方の方が一般的で推奨されるテクニックです。
複数条件時の空白セルやエラーへの対処
複数の条件を指定すると、すべての条件に合致するデータが1つも存在しないという状況が発生しやすくなります。そのような場合、エクセルは「#NUM!」や「#CALC!」といったエラーを返します。これを見栄え良く処理するために、IFERROR関数を外側に被せておきましょう。
「=IFERROR(計算式, “-“)」のように記述しておけば、該当するデータがなくてもハイフンや0を表示させることができ、レポートとしての完成度が高まります。また、条件範囲内に空白セルが含まれていると予期せぬ挙動をすることがあるため、事前にデータのクレンジング(整理)を行っておくことも重要です。
複雑な条件になればなるほど、数式が正しい結果を返しているか不安になるものです。まずは小さなサンプルデータで数式の動作をテストし、意図した通りの数値が算出されていることを確認してから、本番の大きなデータに適用するようにしましょう。
中央値の計算でよくあるエラーと解決するためのポイント

条件付きで中央値を計算しようとすると、思い通りの結果が出なかったり、エラーが表示されたりすることがよくあります。ここでは、多くのユーザーがつまずきやすいポイントと、それを解決するためのチェックリストをまとめました。
「#NUM!」エラーが出る場合のチェックポイント
中央値の計算で最もよく遭遇するのが「#NUM!」エラーです。これは、MEDIAN関数に渡されたデータの中に、計算対象となる数値が1つも含まれていない場合に発生します。条件の設定が厳しすぎて、該当する行がゼロになっている可能性が高いです。
まずは、指定した条件が正しいか、スペルミスや全角・半角の混同がないかを確認してください。例えば、条件範囲が「東京都 」(最後にスペースがある)なのに、数式では「”東京都”」と指定していると一致しません。また、数値の範囲が文字列として認識されていないかもチェックが必要です。
エラーを回避するには、先ほど紹介したIFERROR関数を使うか、条件を見直してデータが存在することを手動で確認しましょう。また、フィルター機能を使って、実際に条件に合うデータが何件あるか事前に把握しておくのも有効なトラブルシューティングです。
「0(ゼロ)」を含めるかどうかの判断基準
中央値の計算において、データ内の「0」の扱いは非常に重要です。例えば、テストの点数を集計する際、欠席者の点数が「0」として入力されていると、それを含めて計算した中央値は実態より低くなってしまいます。これを防ぐには、数式内で「0を除外する条件」を追加する必要があります。
数式に「(数値範囲<>0)」という条件を加えることで、0以外の数値だけを対象に中央値を求めることができます。これを忘れると分析結果を誤って解釈する原因になるため、「その0は有効なデータなのか、それとも欠損値なのか」を明確に定義した上で計算を行いましょう。
逆に、売上集計などで「売上がなかった日(0円)」も含めるべき場合は、そのまま計算に含めます。データの性質によって正解が変わるため、集計の目的を常に念頭に置いておくことが、正しい中央値を導き出す鍵となります。
計算結果がおかしいと感じた時の検証用テーブル
複雑な数式を使っていると、出てきた数値が本当に正しいのか不安になることがあります。その場合は、簡易的な検証用の表を作成して、手動で計算結果を突き合わせてみましょう。以下の表のような構成でデータをフィルタリングしてみるのがおすすめです。
| 項目 | チェック内容 | 解決策 |
|---|---|---|
| データの型 | 数値が「文字列」になっていないか | 「数値」に変換する |
| 隠れたスペース | 条件に余計な空白が含まれていないか | TRIM関数で空白を削除する |
| 配列の確定 | { } で囲まれているか(古いVer) | Ctrl+Shift+Enterを押し直す |
このように、エラーには必ず原因があります。一つずつ要因を切り分けて確認していくことで、複雑な条件付き中央値の計算も確実に行えるようになります。エクセルのトラブル解決は、こうした地道な確認の積み重ねが一番の近道です。
中央値(MEDIAN)は、平均値と違って「データの個数」によって計算方法が変わります。データが奇数個なら真ん中の値、偶数個なら真ん中2つの平均になります。エクセルはこの処理を自動で行ってくれますが、手計算と合わないときは個数を確認してみてください。
中央値をエクセルで条件付き集計する際のポイントまとめ
この記事では、エクセルで中央値を条件付きで求めるための様々な手法を紹介してきました。専用の「MEDIANIF」関数がないからこそ、状況に応じた最適な方法を選択することが重要です。最後に、今回解説した重要なポイントを振り返ってみましょう。
まず、最新のExcel 365や2021を使用しているなら、FILTER関数とMEDIAN関数を組み合わせる方法が最もおすすめです。数式がシンプルで読みやすく、配列数式の特殊な操作も不要なため、ミスを大幅に減らすことができます。一方で、古いバージョンとの互換性が必要な場合は、IF関数を用いた配列数式を活用しましょう。この際、入力後の「Ctrl + Shift + Enter」を忘れないようにすることが最大の注意点です。
また、複数条件を指定する場合には、IF関数のネストや論理積(掛け算)を活用することで、複雑な絞り込みにも対応可能になります。その際、意図しない「0」や「エラー値」が計算に含まれないよう、数式の構成には細心の注意を払いましょう。データの性質に合わせて、不要な値を除外する条件を追加する工夫も、正確な分析には欠かせません。
中央値は、データの真実の姿を映し出す非常に強力な指標です。条件付きで自在に中央値を算出できるようになれば、あなたのデータ分析スキルは一段上のレベルへと引き上がります。この記事で紹介したテクニックを日々の業務に活かし、より説得力のあるレポート作成や意思決定に役立ててください。

