Excelを勉強しましょう EnjoyExcel

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

①条件分岐 If~Then

f:id:EnjoyExcel:20210903113551p:plain

今回から条件分岐について書いていこうと思います。

 

そもそも「条件分岐」とは?って思いますよね。以下のように4回に分けて説明していきます。

 

 

では説明にはいります。

 

突然ですがVBAを書いていくと以下のような事ありませんか?

・〇〇の時だけ△△の処理をさせたい。

・〇〇以外の時だけ◇◇の処理をさせたい。

 

上記のような人の意思が入ったような事をさせたい時に使うのが「条件分岐」です。加えて「条件分岐」はマクロの記録では再現出来ません。自力でコードが書けないと出来ない処理ですが覚えてしまえば他者との差別化も可能です。是非覚えてください。

 

条件分岐の方法はいくつかあります。

・If~Then

・If~Then (ElseIfを用いた処理)

・If~Then(Ifのネスト)

・Select~Case

 

主な処理としてはこのぐらいでしょうか。

「If~Then」っていうのはコードを略して書いていましてあだ名みたいなものです。

「If~Then 使ってコード書けば出来そうだよね。」なんて感じで使います。

 

提示した4件については使い分けの明確な条件は無く状況に応じて使い分けます。使っていくと各自で住み分けが出来てくると思いますのでまずは気にせず一通り理屈を覚えていきましょう。

 

では「If~Then」から。

以前 社内のVBA勉強会用に用意した記事でも説明させていただいてますのでひとまずリンクを貼らせていただきます。

enjoyexcel.hatenablog.com

リンク先の中段から後半にかけて「If~Then」の説明をしています。

(リンク先ではIF文という表現をしています)

 

リンク先と内容重複するところもありますが説明を続けます。

最初に型(フォーマット)を提示します。

 

↓以下がフォーマットです。

IF  条件 Then

 条件がTrueだった時の処理

Else

 条件がFalseだった時の処理

End If

こんな感じで「If~Then」の他にも「Else」と「End IF」が加わりフォーマットが形成されます。

 

基本は水色の文字の部分がベースになって間に条件や処理を記入します。

 

ただし「Else」だけは必要に応じて記入します。「〇〇のときは××する」だけ設定したいときは「〇〇じゃない時」の事を考えなくて良いのでElseは必要無い為です。

 

必ず必要なのは「If」「Then」「End If」。状況に応じて「Else」も必要。という事になりますね。

 

最初に指定した条件に当てはまるときは「True」となりますので上段へ処理を書く。条件に当てはまらない時は「False」となりますので下段へ処理を書くといった具合にコードを書き分けます。

 

基本となる「If~Then」ではこのように1つの条件に対して最低1つ、最高2つの選択肢を提示出来ます。

 

では実際にコードを書いてみましょう。

ひとまず「コード+日本語」で書いてその後コードに置き換えてみます。

 

IF セルA1が”おはようございます”だったら Then

 セルA2に”おはようございます”を入力   ・・・ True の時

Else

 セルA2に”こんにちは”を入力   ・・・False の時

End If

 

これをコードとして書いてみます。

 

If Range("A1") = "おはようございます" Then

 Range("A2") = "おはようございます"

Else

 Range("A2") = "こんにちは"

End If

 

このような形になります。

型(フォーマット)が決まっていて条件と選択肢を決まった位置に書くだけなので扱いやすそうですね。

 

コードを実行した結果は以下のようになるはずです。

f:id:EnjoyExcel:20210903100916p:plain

 

「おはようございます」以外は「こんにちは」になります。

セルA1が空欄(無言)でもセルA2に「こんにちは」が入力される仕様です。

f:id:EnjoyExcel:20210903101000p:plain

 

処理としては合ってます。期待した結果が出ているのですがこれだと生活の実態に合ってない気がします。

 

朝「おはよ」に対して「こんにちは」は返さない(多分)ですよね。無言ですれ違った人に「こんにちは」って言ったら「?」ってなりそうです。

 

日々の生活の1コマを表現するには上記コードでは少し足りない気がします。

 

「挨拶」という行為は1つだとしても挨拶に種類がありますのでIF~Thenだけでは表現するのが難しそうです。

 

ではもう少し条件、処理について他の条件分岐を使いながら深堀りしていきましょう。