第7回.セルの値によって計算を変える(Ifステートメント)
エクセルでは、他の列の値によって計算式を変えたりすることが多々あります。
つまり、条件により処理を分けるということです。
マクロVBAでも、IfはIfと書くのですが、その後の書き方が違ってきます。
Ifの説明用のサンプル

C列に単価が税込みか税抜きかの区分が入っています。
単価が税抜きなら、単価×数量×1.08
このようにして税込み金額を求めるという計算になります。
端数処理には、関数が必要になりますので、関数は今後説明します。


後は、C列の税込/税抜を判断して、計算を切り替えればよいという事です。
マクロVBAでのIfの使い方
Ifを使います。
用語としてはIfステートメントと言います。
条件により、処理を分けることが出来ます。

ステップインF8で、どのように動いているかを確認してください。
必ず、ステップインF8で確認してください。
「こんなのステップインF8じゃなくても分かるよ」
と言いたいかもしれませんが、必ずステップインF8で確認してください。
そういう経験なしに、上達はあり得ないのです。
最後に練習問題を掲載していますので、ぜひ取り組んでください。
Ifステートメントの書き方
真(True)の場合の処理
Else
偽(False)の場合の処理
End If
真(True)の場合の処理
Else
End If
↓ 通常は、Elseも省略します。
If 条件式 Then
真(True)の場合の処理
End If
Else
偽(False)の場合の処理
End If
条件式の結果が正しい場合の事です。
・偽(False)の場合とは
条件式の結果が間違っている場合の事です。
この時、
A1セルに100が入っていれば真(True)
A1セルに100が入っていなければ偽(False)
それぞれ複数行の命令(処理)を書けます。
Ifのネスト(入れ子)
つまり、Ifの中にさらにIfを入れることが出来るという事です。
If 条件式2 Then
条件式1が真、かつ、条件式2が真
Else
条件式1が真、かつ、条件式2が偽
End If
Else
If 条件式2 Then
条件式1が偽、かつ、条件式2が真
Else
条件式1が偽、かつ、条件式2が偽
End If
End If
AndとOr
Andの前後の条件が、同時に満たされたときが真(True)となります。
If 条件1 And 条件2 Then
このように使います。
If Cells(i, 3) = "税込" And Cells(i, 1) > 100 Then
これは、Cells(i, 3)が"税込" かつ Cells(i, 1)が100より大きい場合
Orの前後の条件の、片方または両方が満たされたときが真(True)となります。
If 条件1 Or 条件2 Then
このように使います。
If Cells(i, 3) = "税込" Or Cells(i, 1) > 100 Then
これは、Cells(i, 3)が"税込" または Cells(i, 1)が100より大きい場合
ElseIfとSelect Caseについて
それでも、やはり気になる方も多いと思うので、どういうものかだけ紹介しておきます。
多分岐とは、
1なら・・・
2なら・・・
3なら・・・
というように、多岐に処理を分岐する場合です。
Ifでは、ElseIfを使った書き方になります。
ElseIfはコードが少し読みずらくなりますので、むしろSelect Caseを使った方が良いです。
Select Caseを使うと、記述が簡潔になりますし、使えると非常に便利なものです。
ただし、基本はIfなので、これをしっかりとマスターしてから、Select Caseを勉強してください。
今は、そういうものがあるという事だけ知っていれば十分です。
マクロVBAは、プログラミングです
繰り返し(For)と条件分岐(If)で全体の流れを作りつつ、関数・機能を使い処理を書く
という事です。
もちろん、関数・機能を知らなければマクロVBAを書き進めることはできませんが、それだけでは書けないのです。
前回までのForと今回のIfが、プログラミングの基礎であり、最重要かつ最優先にマスターすべきことです。
これらをマスターする良い方法は・・・
とにかく書いて、納得するまで何度でもスッテプインF8で実行してください。
結局、マクロVBAが覚えられないという人の多くは、
この繰り返し(For)と条件分岐(If)が上手く書けないという場合がほとんどなのです。
関数は、シートの関数とセットで覚えるようにします。
機能は、手作業で使うエクセルの機能とセットで覚えるようにします。
これらは、何回か後の回に詳しく説明します。
Ifステートメントの練習問題

G列に"合格"と"不合格"を判定して出力します。
・合格の条件
合計が350点以上、かつ、英語・数学・国語の3教科は全て70点以上である事


両方書いてみて下さい。
Ifの書き方はいろいろあり、どれが良いとは一概に言えません。
どのような書き方が良いかというと・・・
あなたにとってわかり易い書き方が一番良いのです。
しかし、必ずステップインF8で実行して、しっかりと確認してください。
それは、実際にご自身でタイピングして覚えてもらいたいからです。
自分でタイピングもしないで、読むだけでVBAを覚えられるなどとは考えないことです、それは無理というものです。
改行方法について
そういう時は、改行して書くことが出来ます。
この改行方法も含めて、実際に上の画像を見ながら書いてみて下さい。
ExcelマクロVBA入門等の対応ページ
第21回.条件分岐(ElseIf)
第22回.条件分岐(Select Case)
第14回.文字の結合(&アンパサンド)と継続行(_アンダーバー)
Ifステートメントは、プログラムの根幹であり極めて重要です。
習得の過程で、以下の記事も是非ご参考にお読みください。
IF文の整理と論理的思考
条件式のいろいろな書き方
実は奥が深いIfステートメント
同じテーマ「マクロVBA再入門」の記事
第4回.セルの値を使って計算する(四則演算)
第5回.同じ計算を行数分繰り返す(For~Next)
第6回.表の先頭から最終行まで繰り返す(ForとEnd(xlUp).Row)
第7回.セルの値によって計算を変える(Ifステートメント)
第8回.表範囲をまとめて消去する(OffsetとClearContents)
第9回.関数という便利な道具(VBA関数)
第10回.ワークシートの関数を使う(WorksheetFunction)
第11回.分からない事はエクセルに聞く(マクロの記録)
第12回.エクセルの言葉を理解する(オブジェクト、プロパティ、メソッド)
第13回.セルのコピペ方法を知る(CopyとPaste、さらに)
第14回.セルの書式を設定する(NumberFormatLocal,Font,Borders,Interior)
新着記事NEW ・・・新着記事一覧を見る
WshNetwork(ネットワークドライブの割り当て等)|VBA技術解説(2025-04-09)
TRANSLATE関数(翻訳) DETECTLANGUAGE関数(言語識別)|エクセル入門(2025-04-08)
QRコード、バーコード作成の覚え書き|エクセル関数応用(2025-04-05)
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.繰り返し処理(For Next)|VBA入門
4.変数宣言のDimとデータ型|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ひらがな⇔カタカナの変換|エクセル基本操作
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
10.条件分岐(Select Case)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。