Excel-ネストされたIFと代替案

ご参加いただきありがとうございます。すぐにウェルカムメッセージが届きます。

ネストされたIFステートメントと後で作成して理解しやすい代替案を見てみましょう。

DavidGoodmanson著

前回の記事では、単純なExcelIFステートメントとその便利ないとこCountIfとSumIF。1つのセルに多くのIF関数があるネストされたIFステートメントにも触れました。

今回は、ネストされたIF、特に次のような代替案について詳しく見ていきます。後で作成して理解するのが簡単になります。

続いて、一部のVBAコード(Visual Basic for Applications)でIFステートメントを利用するいくつかの代替方法とSelectCaseステートメントについて説明します。

列Bの評価番号は、列Cのテキスト説明に変換されます。Excelでは、さまざまな方法があります。これ。このような単純な例では、ネストされたIFで十分ですが、他のオプションがあります。他の人が読みやすくなります。

ネストされたIFの長いグループを作成しようとする人は誰もいません。それは通常、時間の経過とともにすべての人に忍び寄ります。 2つまたは3つのオプションを持つ単純なネストされたIFは、IFが増えるにつれて大きくなり、読み取り不能になり、コーディングエラーが発生しやすくなります。これは、40レベルの「単純な」ネストされたIFです。

=IF(A2="A",TRUE,IF(A2="B",TRUE,IF(A2="C",TRUE,IF(A2="D",TRUE,
IF(A2="E",TRUE,IF(A2="F",TRUE,IF(A2="G",TRUE,IF(A2="H",TRUE,
IF(A2="I",TRUE,IF(A2="J",TRUE,IF(A2="K",TRUE,IF(A2="L",TRUE,
IF(A2="M",TRUE,IF(A2="N",TRUE,IF(A2="O",TRUE,IF(A2="P",TRUE,
IF(A2="Q",TRUE,IF(A2="R",TRUE,IF(A2="S",TRUE,IF(A2="T",TRUE,
IF(A2="U",TRUE,IF(A2="V",TRUE,IF(A2="W",TRUE,IF(A2="X",TRUE,
IF(A2="Y",TRUE,IF(A2="Z",TRUE,IF(A2="AA",TRUE,IF(A2="AB",TRUE,
IF(A2="AC",TRUE,IF(A2="AD",TRUE,IF(A2="AE",TRUE,IF(A2="AF",TRUE,
IF(A2="AG",TRUE,IF(A2="AH",TRUE,IF(A2="AI",TRUE,
IF(A2="AJ",TRUE,IF(A2="AK",TRUE,IF(A2="AL",TRUE,IF(A2="AM",TRUE,
IF(A2="AN",TRUE,FALSE))))))))))))))))))))))))))))))))))))))))

Excel 2007では、1つの式に64個のネストされたIFを含めることができますが、そのような行のデバッグは頑張ってください。数式の色分けなどを備えた最近のバージョンのExcelでは、ネストされたIFの制御が少し簡単です。これらのヘルパーにもかかわらず、ネストされたIFは避けるのが最善です。

ネストされたオプションが後で拡張される可能性があると思われる場合は、検討してください。最初からの選択肢の1つ。

ネストされたIF

まず、ネストされたIF関数について、セルC3の式を以下に示します。

=IF(B3=5, "Boom", IF(B3=4, "Recovery", IF(B3=3, "Turning Point",
IF(B3=2, "Recession", IF(B3=1, "Depression")))))

ネストされたIFは左から右に機能し、論理テストを評価します。 B3 = 5、その評価が真の場合、IFはテキスト「ブーム」を挿入します。B3が5に等しくない場合、IFは次の論理テスト(B3 = 4)を調べ、各ステップを順番に評価します。

  • IFは、論理テストが満たされるまで各テストの評価を続け、その後関数を終了します。
  • 最初のIFの左側の等号は、その最初のIFに対して1回だけ必要であり、その後は、ネストのレベルごとに、テキストIFを入力するだけです(これは、ネストされたワークシート関数に当てはまります)。
  • 開いた括弧「(」の数は、閉じた括弧の数と一致する必要があります)。 “)”。上記の式の例では、5つの開いた括弧があり、最後に5つの閉じた括弧が一致しています。最近のバージョンのExcelには、括弧と引用符をまっすぐに保つためのより優れた色付けとエラーチェック機能がありますが、ネストされたIFは解決するのが面倒です。

ルックアップテーブル

ネストされたIFの複雑さを回避する1つの方法は、参照テーブルにリンクされたVLOOKUPを使用することです。ワークシートのどこにありますか。

テーブルは次のようになります。

列Cの関数元のテーブルの次のようになります。

=VLOOKUP(B3,$G$2:$H$6,2,FALSE)

通常、ルックアップテーブルは同じワークシートの他のタブに配置しますが、データはどこからでも取得できます。

VBA –IFステートメント

別の方法は、カスタムVBA関数を作成し、IFロジック全体をVBAコードに入れることです。

これには次の利点があります。読みやすく、理解しやすいです。

欠点は、コードセキュリティの必要性と、VBAコードが正当でウイルスではないことへの懸念です。ユーザーがコードが添付されたワークシートを取得することに慣れていない場合は、VBAオプションを避けたいと思うかもしれません。

これはコードスニペットです。これは、この記事の冒頭にあるネストされたIFと同じロジックですが、見ることができ、はるかに読みやすくなっています:

" Using a VBA if statement structure
" ==================================
If Rating = 5 Then
Prediction = "Boom"
ElseIf Rating = 4 Then
Prediction = "Recovery"
ElseIf Rating = 3 Then
Prediction = "Turning Point"
ElseIf Rating = 2 Then
Prediction = "Recession"
ElseIf Rating = 1 Then
Prediction = "Depression"
End If

VBA:Select Case

最後に、さらに読みやすい構造はSelectCaseステートメントです。

"Using a Select Case structure
"=============================
Select Case Rating
Case 5
Prediction = "Boom"
Case 4
Prediction = "Recovery"
Case 3
Prediction = "Turning Point"
Case 2
Prediction = "Recession"
Case 1
Prediction = "Depression"
End Select

Select Caseステートメントは別のVBA構造であり、最小限の反復キーイングでさまざまな選択肢を評価する方法を提供します。 。また、よりシンプルで読みやすく、対象の変数の選択肢が3つ以上ある場合に使用する必要があります。

VBA:およびそれ以降…

最後にいくつかのアイデアを提供しますSelect Caseの優れた機能の概要は、SelectCaseの拡張バージョンです。

Select Case Rating
Case 4.5 To 10
Prediction = "Boom"
Case 3.5 To 4.49
Prediction = "Recovery"
Case 2.5 To 3.49
Prediction = "Turning Point"
Case 1.5 To 2.49
Prediction = "Recession"
Case 0.5 To 1.4
Prediction = "Depression"
Case 0 To 0.49
Prediction = "Money under the Mattress"
Case Else
Prediction = "No prediction - there"s no economy left!"
End Select

このバージョンでは、値の範囲(たとえば、3.5以上4.5以下の評価)をテストし、次のような小数の評価を提供できるようにします。 2.5。

さらに、構造の下部には「Else」コントロールがあります。基本的にはevをカバーします。以前のElseifsでカバーしなかった他のすべて。評価に相当するものがない場合は、構造のElse部分が代替コントロールを提供します。

IF関数級数については以上です。フィードバック、質問、提案をお待ちください。またお会いしましょう。

関連項目

  • ExcelのSUMははるかに優れています
  • 複雑なExcelを作成する使いやすいセル
  • ネストされたIFオプションの追加
  • ExcelのCHOOSEオプション
  • ExcelのIF関数
ご参加いただきありがとうございます。すぐにウェルカムメッセージが届きます。

Leave a Reply

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です