セルの値によって計算を変える(ステートメント)最終更新日:2016-03-29第7回.セルの値によって計算を変える(ステートメント)エクセルでは、他の列の値によって計算式を変えたりすることが多々あります、つまり、条件により処理を分けるということです、シートではIF関数を使いますが、マクロVBAでもIfなのですが書き方が違います。以下の表を使いましょう。単価が、税込み単価と、税抜き単価が混在している表になります。税抜きなら、単価×数量×1.08という計算になります。消費税の端数に関しては、今回は無視します。端数処理には、関数が必要になりますので、関数は今後説明します。後は、C列の税込/税抜を判断して、計算を切り替えればよいという事です。それには、Ifを使います。用語としてはIfステートメントと言います。条件により、処理を分けることが出来ます。ここは理屈はあまり必要としません。ステップインF8で、どのように動いているかを確認してください。ステップインF8で確認してください。こんなのステップインF8じゃなくても分かるよ、と言いたいかもしれませんが、必ずステップインF8で確認してください。いう些細な事の経験の積み重ねが、後々に生きてくるのです。いう経験なしに、上達はあり得ないのです。最後に練習問題を掲載しています、ぜひ取り組んでください。通常は、Elseも省略します。条件式の結果が正しい場合の事です。・偽(False)の場合とは条件式の結果が間違っている場合の事です。Thenこの時、A1セルに100が入っていれば真(True)A1セルに100が入っていなければ偽(False)真(True)の場合の処理、偽(False)の場合の処理には、それぞれ、複数行の命令(処理)を書けます。■Ifのネスト(入れ子)Ifの中にさらにIfを入れることが出来ます、Ifのネスト(入れ子)することが出来ます。If■AndとOrシートでは、AND関数、OR関数がありますが、マクロVBAでは、AndやOrは、論理演算子と言います。・And論理積と言い、「かつ」という事です。Andの前後の条件が、同時に満たされたときが真(True)となります。Thenこのように使います。・Or論理和と言い、「または」という事です。Orの前後の条件の、片方または両方が満たされたときが真(True)となります。Thenのように使います。Caseについて書籍やネットでは真っ先に紹介している場合を見かけますが、むしろ、後回しにして覚えた方がよいです。それでも、やはり気になる方も多いと思うので、どういうものかだけ紹介しておきます。多分岐になる場合があります。多分岐とは、1なら・・・2なら・・・3なら・・・というように、多岐に処理を分岐する場合です。このような場合は、Ifでは、ElseIfを使った書き方になります。Caseを使う書き方もあります。Caseを使った方が良いです。Caseを使うと、記述が簡潔になりますし、使えると非常に便利なものです。Caseを勉強してください。少なくとも、覚えるのはこのシリーズを終えてからにしてください。今は、そういうものがあるという事だけ知っていれば十分です。マクロVBAは、プログラミングです。繰り返し(For)と条件分岐(If)で全体の流れを作りつつ、関数・機能を使い処理を書くという事です。書籍や、ネットの情報のほとんどは、関数・機能について書かれています。関数・機能を知らなければマクロVBAを書き進めることはできませんが、それだけでは書けないのです。プログラミングの本質・品質は、繰り返し(For)と条件分岐(If)で決まるものです。前回までのForと今回のIfが、プログラミングの基礎であり、最重要かつ最優先にマスターすべきことです。これらをマスターする良い方法は・・・とにかく書いて、とにかく実行するこれしかありません。書いて、納得するまで何度でもスッテプインF8で実行してください。結局、マクロVBAが覚えられないという人の多くは、この繰り返し(For)と条件分岐(If)が上手く書けないという場合がほとんどなのです。関数は、シートの関数とセットで覚えるようにします。機能は、手作業で使うエクセルの機能とセットで覚えるようにします。これらは、何回か後の回に詳しく説明します。※※※F列に5科目の合計を出力します。G列に"合格"と"不合格"を判定して出力します。上記のどちらでも動作は同じです。両方書いてみて下さい。Ifの書き方はいろいろあり、どれが良いとは一概に言えません。どのような書き方が良いかというと・・・あなたにとってわかり易い書き方が一番良いのです。書き写しで構いません。ステップインF8で実行して、しっかりと確認してください。改行方法についてVBAコードがあまり横に長くなってしまうと見づらくなります。いう時は、改行して書くことが出来ます。半角スペースに続けて_(アンダーバー)を書くことで、続きを次の行に書けます。この改行方法も含めて、実際に上の画像を見ながら書いてみて下さい。※VBAコードの掲載方法について画像で掲載していますが、それは、実際にご自身でタイピングして覚えてもらいたいからです。自分でタイピングもしないで、読むだけでVBAを覚えられるなどとは考えないことです、それは無理というものです。セルの値によって計算を変える(ステートメント)このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。