doodle-on-web

自分で調べたことや、仕事の中で質問されたことなどをまとめています。

エクセルのIF関数にIF関数を重ねていく入れ子を使用する際の19のポイント

スポンサーリンク

IF関数は、 Excelで最も使用頻度の高い機能の一つです。 IFは単純な関数ですが、使いこなすことでExcelに命を吹き込むことができます。

しかし、よくある問題として、IFは別のIFにつながることが多く、2つ以上のIFを組み合わせると、読みづらく、美しさが半減してしまいます。

IFを入れ子で使うためのポイントは何ですか?

入れ子にする場合に、他の方法はありますか?

IFを複数使いたくないのですが、どうすればいいですか?

1.基本的なIF

複数使用されているIF関数について説明する前に、基本的なIFを簡単に確認しましょう。

= IF( test 、[ true ]、[ false ])

IF関数はテストを実行し、結果が真か偽かに応じて異なるアクションを実行します。

角括弧に注意してください...これらは引数がオプションであることを意味します。しかし、あなたが提供しなければならないのいずれかの真の値、または偽の値を。

説明のために、ここではIFを使用してスコアをチェックし、少なくとも65のスコアの「パス」を計算します。

f:id:doodle-on-web:20191009103202p:plain

例のセルD3には次の式が含まれています。

= IF( C3 >= 65,"合格")

これは次のように読むことができます:C3のスコアが少なくとも65の場合、「合格」を返します。

ただし、スコアが65 未満の場合、IFはfalseを返します。falseの場合は値を指定しなかったためです。非合格スコアに「失敗」を表示するには、次のように偽引数として「失敗」を追加します。

= IF( C3 >= 65,"合格","不合格")

f:id:doodle-on-web:20191009103223p:plain

2.ネストの意味

ネストとは、1つの式が別の式の結果を処理できるように、式を他の式の中に結合することを意味します。たとえば、次の式は、TODAY関数がMONTH関数内にネストされています。

=MONTH(TODAY())

TODAY関数は、MONTH関数内の現在の日付を返します。MONTH関数はその日付を取り、現在の月を返します。適度に複雑な数式でもネストが頻繁に使用されるため、より複雑な数式ではどこにでもネストが見られます。

3.単純なネストされたIF

入れ子になったIFは、1つのIFステートメントがもう1つのIFステートメントの内側に表示される、式内のさらに2つのIFステートメントです。

説明のために、以下では、IF関数を追加し、一方のIFを他方のIFにネストすることにより、上記の元の合否式を拡張して「不完全な」結果を処理しました。

f:id:doodle-on-web:20191009103240p:plain

=IF(C3="","Incomplete",IF(C3>=65,"合格","不合格"))

外側のIFが最初に実行され、C3が空白かどうかをテストします。その場合、外部IFは「不完全」を返し、内部IFは実行されません。

スコアが空白ない場合、外側のIFはFALSEを返し、元のIF関数が実行されます。

4.スケールのネストされたIF

「スケール」を処理するためにネストされたIFが設定されていることがよくあります。たとえば、グレード、送料、税率、または数値入力でスケールによって異なる他の値を割り当てる場合です。スケールのレベルが多すぎない限り、ネストされたIFはここで正常に機能しますが、数式を整理しておく必要があります。そうしないと、読みにくくなります。

秘Theは、方向(高から低、または低から高)を決定し、それに応じて条件を構成することです。たとえば、「低から高」の順序でグレードを割り当てるには、次の表で必要なソリューションを表すことができます。「A」には条件がないことに注意してください。他のすべての条件を実行すると、スコアは95より大きくなければならないため、「A」になるためです。

スコア グレード 間隔
0〜63 F <64
64-72 D <73
73-84 C <85
85-94 B <95
95-100 A

条件を明確に理解したら、最初のIFステートメントを入力できます。

=IF(C5<64,"F")

これは「F」を処理します。ここで、「D」を処理するには、別の条件を追加する必要があります。

=IF(C5<64,"F",IF(C5<73,"D"))

「false」の結果のために、最初のIFに別のIFをドロップしたことに注意してください。「C」を処理するように式を拡張するには、プロセスを繰り返します。

=IF(C5<64,"F",IF(C5<73,"D",IF(C5<85,"C")))

最終学年に達するまでこの方法を続けます。次に、別のIFを追加する代わりに、falseの最終グレードを追加します。

=IF(C5<64,"F",IF(C5<73,"D",IF(C5<85,"C",IF(C5<95,"B","A"))))

動作中の最後のネストされたIF式は次のとおりです。

f:id:doodle-on-web:20191009103302p:plain

5.ネストされたIFには論理フローがあります

「内部」の関数または式は、残りの式を続行するために最初に解決する必要があるため、多くの式は完全に解決されます。

「外部」IFは「内部」IFへのゲートウェイのように機能するため、ネストされたIFには独自の論理フローがあります。これは、外部IFの結果によって内部IFが実行されるかどうかが決まることを意味します。以下の図は、上記の評定式の論理フローを視覚化したものです。ネストされたIFの論理フロー

6. 数式の検証

Windowsでは、数式の検証機能を使用して、Excelが数式を段階的に解決するのを見ることができます。これは、より複雑な数式の論理フローを「確認」し、期待どおりに動作しない場合のトラブルシューティングを行うための優れた方法です。以下の画面は、数式の検証ウィンドウが開いていて準備ができていることを示しています。[検証]ボタンをクリックするたびに、式の「次のステップ」が解決されます。数式の検証機能は、リボンの[数式]タブ(Alt M、V)にあります。

f:id:doodle-on-web:20191009103321p:plain

残念ながら、ExcelMacバージョンには評価機能が含まれていませんが、以下のF9トリックを使用できます。

7. F9を使用して、チェック結果を見つける

数式バーで式を選択してF9キーを押すと、Excelは選択された部分のみを解決します。これは、数式が実際に実行していることを確認するための強力な方法です。以下の画面では、スクリーンチップウィンドウを使用して数式のさまざまな部分を選択し、F9をクリックしてその部分が解決されたことを確認しています。

f:id:doodle-on-web:20191009103341p:plain

F9を取り消すには、MacでControl + Z(Command + Z)を使用します。Escキーを押して、変更せずに式エディターを終了することもできます。

8.限界を知る

Excelには、IF関数をネストできる深さに制限があります。Excel 2007まで、Excelは最大7レベルのネストされたIFを許可していました。Excel 2007+では、Excelは最大64レベルを許可します。

ただし、多くのIFをネストできるからといって、そうすべきだというわけではありません。レベルを追加するたびに、式の理解とトラブルシューティングが難しくなります。ネストされたIFを数レベル以上深く操作している場合は、おそらく別のアプローチをとる必要があります。代替策については、以下を参照してください。

9.プロのように括弧を一致させる

ネストされたIFの課題の1つは、括弧の一致または「バランス」です。括弧が正しく一致しない場合、数式は壊れます。幸いなことに、E xcelには、数式の編集中にかっこが「バランスが取れている」ことを確認するのに役立つツールがいくつか用意されています。

最初に、括弧のセットが複数ある場合、括弧は色分けされているため、開き括弧は閉じ括弧と一致します。これらの色は見づらいですが、よく見るとそこにあります。

f:id:doodle-on-web:20191009103400p:plain

かっこを閉じると、2番目(およびそれ以上)に、Excelは一致するペアを簡単に太字にします。数式をクリックし、矢印キーを使用してかっこ内を移動することもできます。一致するペアがある場合、Excelは両方のかっこを簡単に太字にします。一致するものがない場合、太字は表示されません。

残念ながら、太字はWindows専用の機能です。MacExcelを使用して複雑な数式を編集している場合、数式をコピーして適切なテキストエディター(Text Wranglerは無料で優れています)に貼り付けて、より適切なかっこ一致ツールを取得することが理にかなっています。括弧が一致するとテキストラングラーが点滅します。コマンド+ Bを使用して、括弧に含まれるすべてのテキストを選択できます。整理した後、数式をExcelに貼り付けることができます。

10.画面ヒントウィンドウを使用して、ナビゲートして選択します

ネストされたIFのナビゲートと編集に関しては、関数画面のヒントがあなたの親友です。これにより、ネストされたIF内のすべての引数をナビゲートして正確に選択できます。

f:id:doodle-on-web:20191009103418p:plain

11.テキストと数字に注意してください

簡単に思い出せるように、IF関数を使用する場合は、数字とテキストが適切に一致するように注意してください。私は次のような数式をよく見ます:

= IF( A1 = "100" 、"Pass" 、"Fail" )

A1のテストスコアは 本当にテキストであり、数値ではありませんか?番号?次に、番号を引用符で囲まないでください。それ以外の場合、「100」は100と同じではないため、値が合格スコアであっても論理テストはFALSEを返します。テストスコアが数値の場合、これを使用します。

= IF( A1 = 100 、「パス」、「失敗」)

12.改行を追加すると、ネストされたIFが読みやすくなります。

ネストされたIFの多くのレベルを含む数式を使用している場合、物事をまっすぐに保つのは難しい場合があります。Excelは数式の「空白」(つまり、余分なスペースや改行)を考慮しないため、改行を追加することでネストされたifの読みやすさを大幅に改善できます。

たとえば、次の画面は、販売数に基づいて手数料率を計算するネストされたIFを示しています。ここでは、典型的なネストされたIF構造を見ることができますが、これは解読が困難です。

f:id:doodle-on-web:20191009103438p:plain

改行なしのネストされたIFは読みにくい

ただし、「falseの場合の値」の前に改行を追加すると、式のロジックが明確に飛び出します。さらに、式は簡単に編集できます。

f:id:doodle-on-web:20191009103455p:plain

WindowsではAlt + Enterで改行を追加でき、MacではControl + Option + Returnを使用できます。

13. ANDおよびORでIFを制限する

ネストされたIFは強力ですが、レベルを追加するとすぐに複雑になります。より多くのレベルを回避する1つの方法は、IFをANDおよびOR関数と組み合わせて使用することです。これらの関数は、IF内で完全に機能する単純なTRUE / FALSEの結果を返すため、これらを使用して単一のIFのロジックを拡張できます。

たとえば、次の問題では、列Dに「x」を入れて、色が「赤」でサイズが「小」の行をマークする必要があります。

f:id:doodle-on-web:20191009103512p:plain

次のように、2つのネストされたIFを使用して式を作成できます。

= IF( B4 = "赤",IF( C4 = "小","x","" ),"" )

ただし、テストをAND関数に置き換えることにより、式を簡略化できます。

= IF(AND( B4 = "赤", C4 = "小" ),"x","" )

同様に、OR関数を使用してこの式を簡単に拡張し、赤OR青AND小を確認できます。

= IF(AND(OR( B4 = "赤", B4 = "青" ), C4 = "小" ),"x","" )

これすべてネストされたIFで実行できますが、式は急速に複雑になります。

14.ネストされたIFをVLOOKUPに置き換える

ネストされたIFが単一の入力に基づいて値を単純に割り当てる場合、VLOOKUP関数で簡単に置き換えることができます。たとえば、次のネストされたIFは、5つの異なる色に番号を割り当てます。

= IF( E3 = "赤",100,IF( E3 = "青",200,IF( E3 = "黄",300,IF( E3 = "緑",400,500 ))))

このVLOOKUPで簡単に置き換えることができます:

= VLOOKUP( E3 、 B3:C7 、2 、0 )

f:id:doodle-on-web:20191009103530p:plain

ボーナスとして、VLOOKUPは数式に値を埋め込む代わりに、ワークシートに値を保持します(値は簡単に変更できます)。

上記の式では完全一致を使用していますが、成績に対してもVLOOKUPを簡単に使用できます。

15. CHOOSEを選択します

CHOOSE関数は、単純な連続番号(1、2、3など)を任意の値にマッピングする必要がある場合に、エレガントなソリューションを提供できます。

以下の例では、CHOOSEを使用して、カスタムの曜日の省略形を作成しています。

f:id:doodle-on-web:20191009103547p:plain

=CHOOSE(WEEKDAY(B3),"月","火","水","木","金","土","日")

もちろん、長くて複雑なネストされたIFを使用して同じことを行うこともできますが、しないでください:)

16.ネストされたIFの代わりにIFSを使用する

Office 365経由でExcel 2016を使用している場合、ネストされたIFの代わりに使用できる新しい関数、IFS関数があります。IFS関数は、ネストせずに複数の条件を評価するための特別な構造を提供します。

f:id:doodle-on-web:20191009103603p:plain

上記で使用される式は次のようになります。

=IFS(E5<60,"F",E5<70,"D",E5<80,"C",E5<90,"B",E5>90,"A")

括弧が1つだけあることに注意してください!

古いバージョンのExcelでIFS機能を使用するスプレッドシートを開くとどうなりますか?Excel 2013および2010(およびExcel 2007と思われますが、テストできません)では、「_ xlfn」が表示されます。セル内のIFSに追加されます。以前に計算された値は引き続き存在しますが、何らかの原因で数式が再計算されると、#NAMEエラーが表示されます。

17.最大出力

場合によっては、IFステートメントを回避する非常に賢い方法でMAXまたはMINを使用できます。たとえば、正の数またはゼロを計算する必要があると仮定します。つまり、計算で負の数が返される場合は、ゼロを表示するだけです。

MAX関数を使用すると、IFが見えない状態でこれを行うことができます。

= MAX(計算、0 )

この手法は、正の場合は計算の結果を返し、そうでない場合はゼロを返します。

私はこの構造がとてもシンプルだから大好きです。

18. IFERRORによるエラーのトラップ

IFの典型的な使用方法は、次のようにエラーをトラップし、エラーがスローされたときに別の結果を提供することです。

= IF(ISERROR( formula )、 error_result 、 formula )

同じ式が2回入力されるため、これは見苦しく冗長です。エラーがない場合、Excelは同じ結果を2回計算する必要があります。

Excel 2007では、エラーをよりエレガントにトラップできるIFERROR関数が導入されました。

= IFERROR( formula 、 error_result )

これで、式がエラーをスローすると、IFERRORは単に指定された値を返します。

19.ブール論理を使用する

「ブール論理」と呼ばれるものを使用して、ネストされたIFを回避することもできます。ブールという言葉は、TRUE / FALSE値を指します。ExcelはセルにTRUEとFALSEの単語を表示しますが、内部的にはExcelはTRUEを1として、FALSEをゼロとして扱います。この事実を利用して、巧妙で非常に高速な数式を作成できます。たとえば、上記のVLOOKUPの例では、次のようなネストされたIF式があります。

= IF( E3 = "赤" 、100 、IF( E3 = "青" 、200 、IF( E3 = "グリーン" 、300 、IF( E3 = "オレンジ" 、400 、500 ))))

ブール論理を使用して、次のように式を書き換えることができます。

= ( E3 = "赤" )* 100 + ( E3 = "青" )* 200 + ( E3 = "緑" )* 300 + ( E3 = "オレンジ" )* 400 + ( E3 = "紫" )* 500

各式はテストを実行し、テストの結果に「真の場合の値」を掛けます。テストはTRUEまたはFALSE(1または0)のいずれかを返すため、FALSEの結果は数式を効果的にキャンセルします。

数値結果の場合、分岐がないため、ブール論理は単純で非常に高速です。欠点として、ブール論理は、それを見ることに慣れていない人々にとって混乱を招く可能性があります。それでも、それは知っておくべき素晴らしいテクニックです。