もうIF関数に頼らない!Excelの数式を劇的にきれいにする7つの強力な代替関数

ExcelのIF関数は条件分岐の定番として広く使われていますが、必ずしも最も洗練された解決策とは限りません。条件が複雑になるにつれ、入れ子(ネスト)になったIF文は読みにくく、メンテナンスやトラブルシューティングも困難になります。こうした多層的な状況に対応するため、Excelには数式をより効率的かつ理解しやすくしてくれる強力な代替関数がいくつも用意されています。
このチュートリアルでは、IF関数を置き換えられる7つのExcel関数を紹介します。
説明には売上データのサンプルを使用し、各関数とIF関数の数式を並べて比較していきます。
1. IFS関数 – 複数の条件をエレガントに処理
IFS関数は複数の条件を順番に評価し、最初にTRUEとなった条件に対応する値を返します。ネストしたIF文を置き換えるのに最適です。入れ子のIF文は長くなりがちでデバッグも大変ですが、IFSを使えば段階的なロジックをシンプルに記述できます。
構文:
=IFS(論理式1, 真の場合の値1, [論理式2, 真の場合の値2], ...)
受注金額をパフォーマンス評価に分類してみましょう。
- Excellent(優秀):受注額が10,000ドル超
- Good(良好):受注額が5,000〜10,000ドル
- Average(平均):受注額が2,000〜5,000ドル
- Below Target(目標未達):それ以外
IF関数を使った場合:
=IF(J2>10000, "Excellent", IF(J2>5000, "Good", IF(J2>2000, "Average", "Below Target")))
IFS関数を使った場合:
=IFS(J2>10000, "Excellent", J2>5000, "Good", J2>2000, "Average", TRUE, "Below Target")
IFS関数は引数をペアで受け取ります。
- 「条件」と「その条件がTRUEだった場合に返す値」のセット。
- 最後のTRUEは、前のどの条件にも当てはまらなかった場合の受け皿(キャッチオール)として機能します。

メリット:
- 紛らわしい括弧の入れ子がない。
- 読みやすく、メンテナンスも簡単。
- 条件の優先順位が明確にわかる。
2. SWITCH関数 – 完全一致の判定に最適
ひとつの値を複数の候補と照合して完全一致を調べたい場合、SWITCH関数は複数のIF文よりも効率的です。1つの値を複数の候補値と比較できます。
構文:
=SWITCH(式, 値1, 結果1, [値2, 結果2], ..., [既定値])
地域ごとに営業マネージャーを割り当ててみましょう。
- East(東):Morgan Smith
- West(西):Taylor Wong
- North(北):Jamie Rodriguez
- South(南):Casey Johnson
IF関数を使った場合:
=IF(E2="East", "Morgan Smith", IF(E2="West", "Taylor Wong", IF(E2="North", "Jamie Rodriguez", IF(E2="South", "Casey Johnson", "Unassigned"))))
SWITCH関数を使った場合:
=SWITCH(E2, "East", "Morgan Smith", "West", "Taylor Wong", "North", "Jamie Rodriguez", "South", "Casey Johnson", "Unassigned")
- SWITCHは式を候補値のリストと照合し、最初に一致した値に対応する結果を返します。
- 最後の引数は、一致するものがなかった場合に返される既定値です。

ネストしたIF文と比べて、SWITCHを使った方がいかにすっきりと読みやすいかに注目してください。
メリット:
- コンパクトで直感的。
- 項目の追加や並べ替えが容易。
- ネストが不要。
3. CHOOSE関数 – 位置番号でリストから選択
数値による位置情報をもとに、あらかじめ用意したリストから値を選ぶようなロジックでは、CHOOSE関数の方がネストしたIFよりも直接的です。
構文:
=CHOOSE(インデックス番号, 値1, [値2], ...)
四半期の番号を、その四半期の最初の月に変換してみましょう。
IF関数を使った場合:
=IF(F2=1, "January", IF(F2=2, "April", IF(F2=3, "July", IF(F2=4, "October", "Invalid Quarter"))))
CHOOSE関数を使った場合:
=CHOOSE(F2, "January", "April", "July", "October")
- CHOOSEは位置番号にもとづいてリストから値を返します。
- IFとは異なり条件を評価するのではなく、インデックス値にもとづいて指定リストから項目を選択します。

また、四半期番号に応じて売上目標を割り当てるのにもCHOOSEが使えます。
=CHOOSE(F2, 50000, 75000, 60000, 90000)
この数式は四半期ごとに異なる売上目標を割り当てます。

メリット:
- 選択肢が3つ以上ある場合に短く明確になる。
- ロジックミスの発生率が低い。
- 更新や並べ替えが簡単。
4. XLOOKUP – テーブルにもとづく判定
値の範囲や参照テーブルにもとづいて判断を行う場合、LOOKUP系関数はネストしたIFよりも強力です。XLOOKUP関数は指定した値を検索し、別の配列から対応する結果を返します。
構文:
=XLOOKUP(検索値, 検索範囲, 戻り範囲, [見つからない場合], [一致モード], [検索モード])
商品カテゴリごとの歩合(コミッション)体系を作ってみましょう。
- Electronics(電化製品):5%
- Furniture(家具):7%
- Other(その他):4%
IF関数を使った場合:
=IF(C2="Electronics", J2*0.05, IF(C2="Furniture", J2*0.07, J2*0.04))
XLOOKUPを使った場合(最新のExcel):
=J2*XLOOKUP(C2, $P$2:$P$4, $Q$2:$Q$4, 0.04)
この数式はカテゴリに対応する歩合率を参照し、売上コミッションを計算します。

メリット:
- データテーブルとの相性が良い。
- リストが長くなっても読みやすい。
- 柔軟性が高い(既定値のフォールバックを設定可能)。
5. AND/OR – 複数条件の組み合わせ
すべての条件を満たす必要がある場合(AND)、または少なくとも1つの条件を満たせばよい場合(OR)は、これらの関数で数式を簡潔にできます。AND関数はすべての条件がTRUEのときにTRUEを返し、OR関数はいずれかの条件がTRUEならTRUEを返します。
構文:
=AND(論理式1, [論理式2], ...)
=OR(論理式1, [論理式2], ...)
次の条件をすべて満たす受注を「Priority(優先)」としてフラグ付けしてみましょう。
- Electronics(電化製品)の受注である、かつ
- 受注額が5,000ドル超である、かつ
- ステータスがProcessing(処理中)である。
IF関数だけを使った場合:
=IF(C2="Electronics", IF(J2>5000, IF(K2="Processing", "Priority", "Normal"), "Normal"), "Normal")
ANDを使った場合:
=IF(AND(C2="Electronics", J2>5000, K2="Processing"), "Priority", "Normal")
この数式はカテゴリとステータスにもとづいて優先フラグを返します。すべての条件がTRUEである必要があります。

次に、以下のいずれかを満たす追加割引対象の受注を特定してみましょう。
- West(西)地域からの受注である、または
- 受注数量が10個超である、または
- 現在の割引率が0%である。
ORを使った場合:
=IF(OR(E2="West", G2>10, I2=0), "Eligible for Discount", "Not Eligible")
このアプローチにより、ロジックが明確になり、条件が複雑になってもメンテナンスしやすくなります。

メリット:
- ロジック式がすっきりする。
- 条件の修正が容易。
- IFやFILTERなどの内部でも使いやすい。
6. MIN/MAX – 範囲の制約をシンプルに
2つの数値を比較する場面では、MIN/MAXを使うことで条件分岐そのものが不要になります。MIN関数は指定範囲内の最小値を、MAX関数は最大値を返します。
構文:
=MIN(数値1, [数値2], ...)
=MAX(数値1, [数値2], ...)
次のようなポリシーを実装してみましょう。
- 商品ごとの最小発注数量は5個。
- 商品ごとの最大発注数量は20個。
- この範囲外の注文は調整が必要。
IF関数を使った場合:
=IF(G2<5, 5, IF(G2>20, 20, G2))
MIN/MAXを使った場合:
この数式は、ネストしたIF文を使わずに値を5〜20の範囲に収めることができます。

続いて、次のような割引ポリシーを実装してみましょう。
- 通常の割引率を受注額に適用する。
- 割引額は率にかかわらず1,500ドルを上限とする。
- 最終価格は500ドルを下回らないようにする。
これらの制約を適用した最終価格を計算します。
IF関数を使った場合:
=IF(J2-((J2*I2)/100)<500, 500, IF((J2*I2)/100>1500, J2-1500, J2-((J2*I2)/100)))
MIN/MAXを使った場合:
=MAX(500, J2-MIN(1500, J2*I2/100))
このアプローチは、ネストしたIF文よりもユーザーフレンドリーで理解しやすくなっています。

メリット:
- 簡潔で信頼性が高い。
- 上限・下限の設定や価格計算のロジックに最適。
7. FILTER – 動的な条件付き結果(Excel 365以降)
FILTERは、指定した条件を満たす値を返す強力な関数で、複数条件をチェックする複雑なIF文を効果的に置き換えます。
構文:
=FILTER(配列, 条件, [空の場合])
売上データから動的なレポートを作成してみましょう。「5,000ドル超のElectronics(電化製品)の受注」をすべて抽出します。
IF関数を使った場合(1行ずつ):
=IF(AND(C2="Electronics", J2>5000), B2, "")
この方法では、各行に数式をコピーする必要があり、結果が断片的になります。
FILTERを使った場合:
=FILTER(B2:B13, (C2:C13="Electronics")*(J2:J13>5000), "No matching products")
この数式は、電化製品カテゴリの商品をフィルタリングして…

FILTER関数は複数の条件を組み合わせて、一致するすべてのレコードを返せるため、複雑なIFロジックなしに動的で条件ベースのレポートを作成するのに理想的です。複数の基準でデータを絞り込み表示するデータ分析タスクにおいて特に威力を発揮します。
まとめ
IF関数は柔軟ですが、常に最も効率的な解決策とは限りません。IF関数の限界を克服できる他のExcel関数が多数存在します。これらの代替関数を使いこなせるようになれば、よりクリーンで保守しやすいExcelの数式を書けるようになります。それぞれの関数には特定のシーンでの強みがあり、適切なものを選ぶことでスプレッドシートの可読性とパフォーマンスを大幅に向上させることができます。
解答付きの無料の高度なExcel演習問題はこちら!
-
MacでMicrosoft Wordが頻繁にクラッシュする問題を解決する6つの対処法
MacでMicrosoft Wordが突然クラッシュしてしまい、ドキュメントやファイルが開けなくなったことはありませんか?この記事では、MacでMS Wordがクラッシュし続ける問題を解決するための、実践的なトラブルシューティング方法を6つご紹介します。ただし、具体的な解決策に入る前に、まず「Microsoft WordがMacでクラッシュし続ける」問題の原因について簡単に確認しておきましょう。Microsoft WordがmacOSで予期せずクラッシュする原因とは?MacOS上でMicrosoft Wordが突然クラッシュする主な原因は以下の通りです。Microsoft Officeスイート
-
Microsoft Outlookですべての標準メールをプレーンテキストで表示・読み取る方法
Microsoft Outlookでは、受信したすべての標準メールをプレーンテキスト形式で表示できます。HTML形式やリッチテキスト形式(RTF)のメールを通じてウイルスや悪意のあるスクリプトが実行されることを心配している方にとって、この機能は非常に有効です。 Outlookですべての標準メールをプレーンテキストで読む方法 Microsoft Outlookには、「すべての標準メールをテキスト形式で表示する」というオプションが用意されています。このオプションを有効にすると、すべてのメールメッセージがプレーンテキスト形式で表示されます。HTMLやMicrosoft Outlookリッチテキスト形