本記事では、Excel 2021およびMicrosoft 365で動作を確認しています。Excel 2019以前のバージョンでは、一部の数式でCtrl
+Shift
+Enter
による配列数式確定(CSE確定)が必要になる場合があります。
【Excel関数パズル】IF関数は禁止!?9つの方法で「合格・不合格」を判定せよ!
「Excelで点数が60点以上なら『合格』、未満なら『不合格』って判定する?そんなのIF関数を使えば一発じゃないか。」
そう思ったあなた、もちろん大正解!
もし、実務でこの課題に直面したら、
=IF(B2>=60,”合格”,”不合格”)
と入力するのが、最も簡単で、最も推奨される、100点満点の回答です。
でも、ここは「Excelで暇つぶし」をするブログ。
たった一つの正解だけで満足していては、面白くないですよね?
今回のテーマは、この誰もが知る「合格・不合格」判定というシンプルなゴールに対して、あえて回り道をすることで、Excel関数の奥深い世界を探検する、知的な「関数パズル」です。
IF関数はもちろん、TEXT、MID、REPT、INDEX、CHOOSE、そしてまさかのVLOOKUPまで!?
合計9種類ものアプローチで、同じゴールを目指します!
この探求を通して、各関数の意外な特性や、Excelの根本的な挙動についての理解が深まるはずです。
「関数の引き出し」を増やす、最高の暇つぶしを始めましょう!
今回のミッション
現在の状態
以下のような、名前と点数が入力されたシンプルな表があります。

目指すゴール
C2
セルに単一の数式を入力し、スピル機能(または配列数式)を使って、B2:B7
の各点数に対応する評価をC列に一括で表示させる。
- 60点以上 → 合格
- 60点未満 → 不合格

アプローチ1:IF関数(王道)
考えかた
まずは基準となる、最も推奨される方法です。
言わずと知れた条件分岐の王様、IF
関数を使います。
数式と解説
=IF(B2:B7>=60,"合格","不合格")
IF(論理式, 真の場合, 偽の場合): 指定した「論理式」が真(TRUE)か偽(FALSE)かを判定し、それに応じた値を返します。
B2:B7>=60
という条件で、点数範囲の各セルが60以上かどうかを判定。
真なら「合格」、偽なら「不合格」を返します。
Excel 2021以降であれば、この一つの数式で結果がスピルして表示されます。
これ以上ないほどシンプルで、誰が見ても分かりやすいですね。

アプローチ2:IF関数(不等号なし)
考えかた
「不等号(>=)を使わずに条件分岐できないか?」という、少しひねくれた発想から生まれたアプローチです。
割り算と整数化の性質を利用します。
数式と解説
=IF(INT(B2:B7/60),"合格","不合格")
INT(数値): 数値の小数点以下を切り捨てて整数にします。
この数式の核心はINT(B2:B7/60)
の部分です。
- 点数が60以上(例: 68)の場合: INT(68/60) → INT(1.13…) → 1
- 点数が60未満(例: 38)の場合: INT(38/60) → INT(0.63…) → 0
ExcelのIF
関数は、論理式部分に0が来ると「偽(FALSE)」、0以外の数値が来ると「真(TRUE)」として扱います。
この性質を利用して、不等号なしでの条件分岐を実現しているのです。
少しトリッキーですが、面白い挙動ですね。

アプローチ3:TEXT関数
考えかた
前回の記事でも登場した、TEXT
関数の表示形式に隠された条件分岐機能を使います。
詳細は前回の記事をご覧ください!
数式と解説
=TEXT(B2:B7,"[>=60]""合格"";[<60]""不合格""")
TEXT(値, 表示形式): 値を指定した表示形式の文字列に変換します。
表示形式の書式コード[>=60]"合格";[<60]"不合格"
が、まさにIF
関数と同じ働きをしています。
ただし、この方法はExcelの古いバージョンでは意図しない挙動をすることがあるので注意が必要です。

アプローチ4:MID関数
考えかた
これも以前の記事(MID関数だけで条件分岐)で登場したテクニックです。
「不合格」という文字列の中から、条件に応じて「合格」または「不合格」を切り出します。
数式と解説
=MID("不合格",(B2:B7>=60)+1,3-(B2:B7>=60))
MID(文字列, 開始位置, 文字数): 文字列の指定した位置から、指定した文字数分の文字を返します。
条件式B2:B7>=60
は、真(TRUE)なら1、偽(FALSE)なら0として計算されます。これにより、
- 60点以上(真):
=MID("不合格", 1+1, 3-1)
→=MID("不合格", 2, 2)
→ 「合格」 - 60点未満(偽):
=MID("不合格", 0+1, 3-0)
→=MID("不合格", 1, 3)
→ 「不合格」
と、見事に文字列を切り分けています。まさに関数パズルですね。

アプローチ5:REPT関数
考えかた
「合格」という文字列は固定で、条件を満たさない場合にのみ、その前に「不」という文字を追加する、という斬新なアプローチです。
数式と解説
=REPT("不",N(B2:B7<60))&"合格"
REPT(文字列, 繰り返し回数): 文字列を指定した回数だけ繰り返します。
この数式の面白い点は、REPT
関数の繰り返し回数に0を指定すると、結果が空白(””)になるという挙動を利用している点です。
- 60点以上(B2:B7<60が偽): REPT(“不”, 0) → “” → 「合格」
- 60点未満(B2:B7<60が真): REPT(“不”, 1) → “不” → 「不合格」
N関数は、TRUE/FALSEを1/0に変換するために使っています。
非常にエレガントな発想ですね。

アプローチ6:INDEX関数
考えかた
数式の中に「不合格」と「合格」が入った、仮想的な2行1列の表を作り、条件によって参照する行を切り替えるアプローチです。
数式と解説
=INDEX({"不合格";"合格"},(B2:B7>=60)+1)
INDEX(配列, 行番号, [列番号]): 配列(範囲)の中から、指定した行と列の位置にある値を返します。
{"不合格";"合格"}
の部分で、1行目に「不合格」、2行目に「合格」が入った仮想的な配列を作成しています。

そして、行番号を指定する部分が(B2:B7>=60)+1
です。TRUEは1、FALSEは0として計算されるため、
- 60点以上(真): 1+1 → 2行目(”合格“)を参照
- 60点未満(偽): 0+1 → 1行目(”不合格“)を参照
となり、見事に条件分岐を実現しています。

アプローチ7:CHOOSE関数
考えかた
INDEX関数と非常に似た考え方ですが、こちらは配列ではなく、引数として選択肢を直接並べていきます。
数式と解説
=CHOOSE((B2:B7>=60)+1,"不合格","合格")
CHOOSE(インデックス番号, 値1, [値2], …): 「インデックス番号」に応じて、後ろに続く「値」の中から一つを選んで返します。
やっていることはINDEX関数とほぼ同じです。(B2:B7>=60)+1
の結果が1か2になり、CHOOSE関数は1なら最初の値「不合格」を、2なら2番目の値「合格」を返します。

アプローチ8:VLOOKUP関数
考えかた
さあ、ここからが本日のハイライトです!
「え、VLOOKUPで条件分岐?」と思ったあなた、正常です。
しかし、普段はFALSE(完全一致)でしか使わないVLOOKUPの、もう一つの顔TRUE(近似一致)を解放する時が来ました。
数式と解説
=VLOOKUP(B2:B7,{0,"不合格";60,"合格"},2,TRUE)
VLOOKUP(検索値, 範囲, 列番号, [検索方法]): 範囲の左端列を検索し、指定した列の値を返します。
まず、{0,"不合格";60,"合格"}
の部分で、数式内に以下のような2行2列の仮想的な表を作成しています。
0 不合格
60 合格

そして、最後の引数をTRUE(近似一致)に設定。
VLOOKUPの近似一致は、「検索値以下の最大値」を探しに行きます。
- 点数が38の場合: 38以下の最大値は0なので、0の行の2列目、「不合格」を返します。
- 点数が68の場合: 68以下の最大値は60なので、60の行の2列目、「合格」を返します。
- 点数が95の場合: 95以下の最大値は60なので、60の行の2列目、「合格」を返します。
どうでしょう!不等号を一切使わずに、見事に条件分岐ができてしまいました。
これぞVLOOKUPの真価の一つです!

アプローチ9:LOOKUP関数
考えかた
VLOOKUPの近似一致が使えるなら、もっとシンプルな書き方はないだろうか?
あります。それこそが、VLOOKUPの大先輩とも言えるLOOKUP関数です。
数式と解説
=LOOKUP(B2:B7,{0,60},{"不合格","合格"})
LOOKUP(検索値, 検査範囲, [対応範囲]): 検査範囲を検索し、対応範囲の同じ位置にある値を返します。
LOOKUP関数は、VLOOKUPの近似一致とほぼ同じ動きを、よりシンプルな形で実現します。
{0,60}
という検査範囲の中から、点数(B2:B7)以下の最大値を探し、それに対応する{"不合格","合格"}
の位置にある値を返すのです。
VLOOKUPよりも引数が少なく、非常に可読性が高いですね。
しかも、このLOOKUP関数は、なんと初代Excelよりも前の表計算ソフトLotus1-2-3の時代から存在する、非常に歴史の古い関数です。互換性もバッチリ!
個人的には、今回のパズルで最も推奨したい、美しく、実用的な数式です。

まとめ
お疲れ様でした!
今回は、「合格・不合格」というシンプルな判定を、合計9種類もの異なるアプローチで実現するという、「暇つぶし」に挑戦しました。
王道のIF関数から、文字列操作、そしてVLOOKUPやLOOKUPの奥深い「近似一致」の世界まで、様々な関数の意外な顔を見ることができたのではないでしょうか。
実務では、もちろんIF関数や、今回私がお勧めしたLOOKUP関数を使うのがベストです。
しかし、こうして一つの目的に対して、あえて複数のアプローチを考えてみること。
それこそが、Excelの根本的な挙動への理解を深め、あなたの「関数の引き出し」を豊かにする、最高のトレーニングになるのです。
あなたのExcelライフが、また一つ、楽しいものになったなら幸いです!