エクセルでの式はある程度プログラム要素を含んでいたりしますよね。表計算として数字を入力していくと自動的に計算してくれるのも、式を組み込むことができるからこその結果。世の中には色々とテンプレートがあって、便利に使うことができます。ただ、それでも汎用のモノなので、自分に合うようにカスタマイズしていったりします。…まあ、今回も自分で改造していった時にちょっとひっかかった部分について書いていこうかと思います。
あるセルに内容があるかないか判定(if)
たとえば、C4のセルに入力があるかないかを判定するとしましょう。その結果をB4セルに反映、中身があった場合は〇、そうじゃない場合は空白のままという処理にします。つまり、
- C4のセルが空白かどうか
- 空白ではなかった場合、B4に〇と表示
この場合、B4のセルに判定(if)の式を書きましょう。書き方としては2パターンあると思います。
【その1:c4が空白の場合という判定方法】 =if(c4="","","〇") 【その2:c4が空白じゃない場合という判定方法】 =if(c4<>"","〇","")
if文は
=if(判定するもの,判定と合致した場合の処理,判定と合致しない場合の処理)
という書き方をします。上の2パターンはイコール(=)で判定しているものと、ノットイコール(<>)で判定しているものになってます。実際にやってみると…
判定には
- = (等しい)
- <> (等しくない)
- > (大なり)
- < (小なり)
- >= (~以上)
- <= (~以下)
などがあります。上の例では文字列の判定でしたが、表計算なので数値の判定もできますし、計算式をいれることもできます。
セルの数字が1以上か判定(if文の中にif文)
次に入力した数字が1以上かどうかを判定してみましょう。今度はC5に入力された数字をB5にて結果表示させます。考えつくのが
=if(c5>=1,"1以上","1未満")
という感じですね。実際にやってみると…
何もない状態も1未満という判定になってしまうのはちょっと困ってしまいますね。ということは、入力が無い時には何も表示しないように改造する必要がありそうです。これは上の「あるセルに内容があるかないか判定(if)」をうまく組み込めばできそうです。式は…
=if(c5="","",if(c5>=1,"1以上","1未満"))
こんな感じでしょうか。
無事、改造完了ですね。本来はこれに数字入力以外は別の表示などの判定も組み込みたいところですが、それはまた別の機会に。ポイントはif文の中にif文を入れることができること。プログラム的な思考でいうと割りと当たり前な感じですが、複雑な条件分岐もこれでできたりしますね。
どちらか合っていれば(or条件)
複雑な条件判定には「AかBどちらか合っていれば」みたいなものも出てくると思います。では、c6かd6に○が入っていれば「マルが入ってます」って表示をするようにします。
=if(or(c6="○",d6="○"),"マルが入ってます","")
orというのが出てきました。()の中身「c6=”○”,d6=”○”」の部分はそのままc6が○である、d6が○であるという判定。これをorでくくっているので、どちらかが合致していればという内容になります。少しややこしいかもしれませんが日本語を織り交ぜて書いてみると
=if(or(判定A,判定B),if結果A、if結果B) もし(どちらか(AかB),合っていれば結果A,違っていれば結果B)
ということになります。
両方あっている場合に(and条件)
先ほどのorはどちらかでした。今度は両方あっている場合にという条件です。andの使い方はorとほぼ同じ。c7とd7に×が入っていれば「×が両方に入っています」、そうでない場合は「×をc7d7に入れてください」と表示させます。
=if(and(c7="×",d7="×"),"×が両方に入っています","×をc7d7に入れてください")
ほぼ同じ書き方なので問題ないですね。書き方としては
=if(and(判定A,判定B),if結果A、if結果B) もし(両方共(AとB),合っていれば結果A,違っていれば結果B)
です。今までの流れからすると簡単だったのではないでしょうか。
まとめ
ざっとエクセルでのif文について書いてみました。andやorを組みあせて、さらにif文の中にif文をかいていければ、多少複雑な条件でも処理できると思います。if文を駆使して、使いやすいエクセル表を書いてみてください!