Excelで「80点以上ならA、60点以上ならB、それ以外はC」と判定するには、IF関数の中にもう一つIF関数を入れる方法があります。このように、関数の引数として別の関数を使うことを「ネスト」または「入れ子」と呼びます。
大切なのは括弧を増やすことではなく、どの条件に当たったら何を返すかを先に決めることです。この記事では3段階評価を例に、式を作る順序、境界値での確認、未入力や範囲外の点数を区別する方法まで説明します。
ADVERTISEMENT
1. 最初の条件に当たらなかった場合を次のIFへ渡す
IFの基本は=IF(条件,条件を満たす場合,満たさない場合)です。数値の点数がA2にあるとして、80点以上なら「A」、それ未満なら「A以外」とするだけなら、次の式で表せます。
=IF(A2>=80,"A","A以外")
ここで「A以外」の部分に、60点以上かを調べるIFを入れます。80点以上でなかった場合だけ、BかCを選ぶ構造です。ネストは繰り返し処理を表す言葉ではなく、関数を別の関数の引数に置く書き方を指します。必ず「偽の場合」だけに入れるという決まりもありませんが、今回はその位置を使います。
条件を文章にすると、80以上はA、60以上80未満はB、60未満はCです。2番目のIFへ進んだ時点で80未満と分かっているので、そこでは60以上だけを調べます。「Bの条件に80未満が書かれていないから不完全」というわけではありません。
まず0〜100の数値が入力される前提で、この3区分を作ります。空欄、文字、101以上、負の数は同じ評価へ押し込まず、後の節で入力の確認を加えます。
2. 3段階評価の式を入力してコピーする
新しいシートでA1を「点数」、B1を「判定」とし、A2:A7に59、60、79、80、0、100を順番に入力します。B2に次の式を入力してください。
=IF(A2>=80,"A",IF(A2>=60,"B","C"))
前半のIF(A2>=80,"A",が最初の判定、後半のIF(A2>=60,"B","C")が残りの判定です。最後には内側のIFを閉じる括弧と、外側のIFを閉じる括弧が一つずつあります。数式全体の先頭だけに=を付け、文字の結果は半角の二重引用符で囲みます。
B2がCになったら、B2:B7を選んでCtrl+Dで下へコピーします。B3では参照がA3へ、B7ではA7へ変わっていることを数式バーで見ます。全行に同じ点数を判定させたいわけではないので、ここでは$A$2という絶対参照にしません。
条件ごとの到達先は次のようになります。80点の行がA、60点の行がBになるかが特に重要です。>と>=を取り違えると、境界の点数だけ結果が変わります。

| 点数 | 期待する結果 |
|---|---|
| 59 | C |
| 60 | B |
| 79 | B |
| 80 | A |
| 0 | C |
| 100 | A |
実際の成績表へ使う前に、この小さな表で全部が合うかを確認します。数式にエラーが出ないことだけでは、評価の順序が正しいとは判断できません。
3. 条件の順番と境界値を点検する
今回のように「以上」で区切る場合、80以上を先に調べます。60以上を先にしてBを返すと、85点も最初の条件に一致し、Aの判定まで進みません。式としては入力できても、業務上の結果が誤る例です。
比較の向きを変えれば、少ない点数から調べる式も書けます。次の式は、0〜100の数値について先ほどと同じ区分です。
=IF(A2<60,"C",IF(A2<80,"B","A"))
したがって「条件は必ず大きい順」が一般的な規則なのではありません。「以上」で狭い範囲から判定するのか、「未満」で下側から除いていくのかを統一します。条件の向きと並べる順番を別々に変更すると、重複や抜けが生まれやすくなります。
確認用には、各しきい値の直前とその値を用意します。今回なら59・60、79・80です。小数の点数も使う運用なら59.5や79.5も試し、判定前に丸める規則があるかを決めます。「見た目では80」と表示されていても保存値が79.5なら、丸めてから判定する式とは結果が違います。
判定がおかしいときは、数式をいきなり全行直さず、問題の行の元の値と式を確認します。数値か文字列か、参照先が一行ずれていないか、しきい値を含む比較かを順番に点検します。
4. 空欄・文字・範囲外を評価から分ける
点数が未入力なのにCと表示されると、未採点と低得点を混同します。まず空欄表示を返し、次に数値かどうか、0〜100の範囲内かを確認する式にすると、入力上の問題を別に扱えます。
=IF(A2="","",IF(ISNUMBER(A2),IF(OR(A2<0,A2>100),"点数を確認",IF(A2>=80,"A",IF(A2>=60,"B","C"))),"数値を入力"))
この式では未入力と空文字を空表示にし、文字で入った点数には「数値を入力」、数値の-1や101には「点数を確認」を返します。0は有効な点数としてCになります。例として、空欄、0、100、101、文字列の「80」を確認してください。文字列の例は先頭にアポストロフィを付けて'80と入力できます。文字列を数値に直すかどうかは元の入力を確認して判断し、式の中で無条件に変換しない構成です。
長く感じたら、入力確認と評価を別列へ分けても構いません。A列を点数、B列を入力チェック、C列を評価にして、どの行が未入力・範囲外なのかを見えるようにします。保守する人が条件を追えることの方が、1セルに収めることより大切です。
式を変更する前の列を残し、正常な点数の判定が変わっていないか比較します。修正後は空欄や不正入力の結果だけでなく、先ほどの59・60・79・80も再確認します。入力チェックを加えたことによって、元の評価基準を変えないためです。
5. IFSや別列へ置き換える場合も同じ例で確認する
IFS関数が使えるExcelなら、条件と結果を並べる形にできます。0〜100の数値が入力されている部分の判定は次のとおりです。
=IFS(A2>=80,"A",A2>=60,"B",TRUE,"C")
IFSも最初にTRUEとなる条件の結果を返すため、順番の注意点は同じです。最後のTRUE,"C"は、前の条件にどちらも該当しなかった場合の結果です。これを省略して該当条件が一つもないと、#N/Aになります。IFからIFSに変えただけで、空欄や入力値の妥当性まで確認されるわけではありません。
MicrosoftのIFS関数の案内では、Microsoft 365やExcel 2019以降などが対象です。共有相手の製品を確認し、対応していない環境へ渡す場合はIFを使うなど、実際に開く環境に合わせます。関数が使えないエラーを、IFERRORで空欄にして済ませないようにしてください。
ネストする相手はIFだけではありません。例えば数値が入ったC2:C4の平均に応じて判定するなら、=IF(AVERAGE(C2:C4)>=80,"達成","未達")という式になります。80、90、70の平均は80なので「達成」です。まずAVERAGEだけで平均を確認し、その結果をIFで比較すると、長い式を一度に読み解かずに済みます。
6. 直すときは元の式と検算用の点数を残す
入力できない場合は、半角の括弧・カンマ・引用符を確認します。入力できるのに結果が違う場合は、条件の順番と参照セルを見ます。全行が同じ結果になるなら、点数の参照を固定し過ぎていないかを確認してください。Microsoftが説明する最大64段という上限を目標に、式を長くする必要はありません。
やり直しに備え、作業用の列で修正してから確定するか、変更前のブックを残します。式を値へ置き換えると後から条件変更へ追従しないため、評価を更新する表では元の式も保存してください。既存の検算用点数を残しておくと、来期にしきい値を変更したときも境界を確認できます。
詳しい仕様はMicrosoftの入れ子の関数、IFの入れ子と注意点、IFS関数を参照できます。まず3段階を正しく作り、条件が増えたら読みやすい列分けや対応表も検討しましょう。
超解決 Excel・Word研究班
企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。
Office・仕事術の人気記事ランキング
- 【Excel】オートフィル(右下の+)が効かない!ドラッグできない時のオプション有効化設定
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
- 【PDF】EdgeでPDFを開くと印刷できない・プリンタ一覧が出ない時のブラウザ再起動とシステムダイアログ
- 【Word】差し込み印刷の金額にカンマを付ける方法|小数・0・空欄の確認
- 【Outlook】祝日が表示されない・重複する時の対処|追加方法と対象年の確認
- 【Outlook】メールの受信が数分遅れる!リアルタイムで届かない時の同期設定と送受信グループ設定
- 保存せずに閉じたExcel・Wordを復元する方法|自動回復・未保存ファイル・履歴の確認
- 【Excel】COUNTAでセルの個数を数える方法|空文字・空白・COUNTとの違い
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【PDF】入力した文字のフォント・サイズ・色を変更する方法|注釈とフォームの違い
