Excelを勉強しましょう EnjoyExcel

アイコンの機能や関数の説明、VBA初心者向けの勉強方法について情報掲載しています。関数、VBAともに理解が進むように出来るだけ事例を交えて説明しています。

④条件分岐 If~Then(Ifのネスト)

f:id:EnjoyExcel:20210906154231p:plain

前回は「ElseIf」の処理について紹介しました。

 

enjoyexcel.hatenablog.com

 

今までは1つの条件に対して1つの処理という形をとってきましたが2つの条件に合致した時だけ処理をさせる等複数条件を絡めて処理を実行させたい時にどうするのかというのを紹介させていただきます。

 

例えば下表の「A」は「条件1」と「条件2」が「○」です。他の英文字の条件にも○と×があってAからDまで4種類の設定があります。各種処理させたい内容が違う際は今までの条件分岐では表現が難しいですね。

f:id:EnjoyExcel:20210906133111p:plain

最終的には4通りの処理を書く事になるのですが条件をどうやって組んだらよいのか考えないといけません。

 

そこで今回は「ネスト」というコードを紹介します。

 

「ネスト」だったり「入れ子」と呼んだりする様ですが今回は「ネスト」で進めます。

 

「ネスト」というのはある処理の中にもう一つ処理を埋め込むというようなイメージを持っていただくと理解出来るのではないかと思います。コードのフォーマットを見ていただくと分かると思いますのでまずは話を進めますね。

 

以下データを使って説明します。

f:id:EnjoyExcel:20210906141557p:plain

 

セルB9、B10で条件に対し選択を行いセルC12付近にある実行ボタンを押すとセルA13に品目が表示されるというデータです。この場合セルA13には「カツカレーうどん」が表示されることになります。

(セルB9、B10はプルダウン等で選択させることで指定文字以外を表示出来ない様にすると良いかと思います。)

 

ではフォーマットを提示します。コードに色を3色使っていますがこの後の説明で分かりやすくするためです。VBEに書く際に3色で色分けという形にはなりません。分かりにくい際は各自コメントで補ってください。

 

IF 条件が「AA」だったら Then

 

 If 条件が「BB」だったら Then

  条件「AA」=True、「BB」=Trueの処理

 Else 条件が「 BB」ではない時

  条件「AA」=True、「BB」=Falseの処理

 end If

 

Else 条件が「AA」ではない時

 

 If 条件が「BB」だったら Then

  条件「AA」=False、「BB」=Trueの処理

 Else 条件が「 BB」ではない時

  条件「AA」=False、「BB」=Falseの処理

 End If

 

End If

 

今回も「日本語+コード」で表現してからコードを書いてみましょう。

 

IF セルB9の値が”ライス” だったら Then

 

 If セルB10の値が”カツ” だったら Then

  セルA13に「カツカレーライス」を入力

 Else セルB10の値が”カツ” ではない時

  セルA13に「エビフライカレーライス」を入力

 end If

 

Else セルB9の値が”ライス” ではない時

 

 If セルB10の値が”カツ” だったら Then

  セルA13に「カツカレーうどん」を入力

 Else セルB10の値が”カツ” ではない時

  セルA13に「エビフライカレーうどん」を入力

 end If

 

End If

 

ではつぎはコードに変換します。

 

IF Range("B9") = "ライス"  Then

 

 If Range("B9") = "カツ" Then

  Range("A13")=Range("A2")

 Else 

  Range("A13")=Range("A3")

 end If

 

Else 

 

 If Range("B10") = "カツ" Then

  Range("A13")=Range("A4")

 Else 

  Range("A13")=Range("A5")

 end If

 

End If

 

先程「ネスト」というのは「ある処理の中にもう一つ処理を埋め込む事」と書きました。見た目で分かるように色を変えてみたのですがいかがでしょうか。ご理解いただけましたか?

 

一番外枠の水色のコードがベースになっていて水色のコードでTrueの際ピンク色のコードに落ちて再び分岐処理に入ります。このピンク色のIf~ThenからEnd Ifまでのコードが埋め込まれているコードになります。水色のコード=Trueは続いているので最終的に以下のうちどちらかの条件が設定される事になります。

 

水色 = True、ピンク色 = True

水色 = True、ピンク色 = False

 

水色のコードでFalseの際は紫色のコードに落ちて再び分岐処理に入ります。この紫色のIf~ThenからEnd Ifまでのコードが埋め込まれているコードになります。水色のコード=Falseは続いているので最終的に以下のうちどちらかの条件が設定される事になります。

 

水色 = False、紫色 = True

水色 = False、紫色 = False

 

このように4通りの処理を表現出来る様になります。条件分岐についてはこれで終了となります。

 

実務ではどんな条件があってどんな分岐が必要なのかによって今まで提示した①~④のコードを使い分ける事になります。コードが書けることは必須ですがまずは直面した仕事を条件と処理にわけて分岐を作るという行為(仕事をコードに落とし込む)が出来ないといけません。

 

これは条件分岐に限らずですが実際の仕事をコード化させる事が出来る様になるとコードの理解が進みます。反対にコードが分かってくると実際の仕事を見たり聞いたりしただけである程度コードが頭に浮かんでくるようになります。

 

私はコードを書く前に紙を使います。紙に実際の仕事を書き出して条件と処理に分けてから線で繋いで・・・と書きながら仕事を理解してどうやってコードを書けばよいのかある程度考えてからPCに向かいます。ある程度といいますか事前検討のほとんどは紙でやりますね。結果これが一番早いかつ手戻りも少ないと思います。ここは各自やり方があると思いますので自分なりのやり方を構築してみてください。

 

こんな感じでコードを書く以外にもやる事沢山ありますので大変ですがなんとか頑張っていきましょう。