EXCEL(エクセル)でIF関数が苦手な人に贈る!ただのYESとNOの繰り返しだよ
こんにちは、数学と英語はだいたい赤点だった営業事務の本間です。
最近wordpressを触るようになって、英語も数学も強くなった気がします!!一応プログラムなので英語や理論を駆使してます。まだまだわかりませんが。
頭の土台がアレなんで標準になっただけですが!できるようになるってことは楽しいですね!!
先日、自分で作った管理表がイイカンジに使いやすくできて嬉しかったのでアウトプットします!
IF関数って難しい!と思いがちですが、プログラム語ではなく日本語で考えるとすごく扱いやすくなりますよ。
これをマスターすれば、いちいち電卓をたたいたり、マニュアルを引っ張り出して計算する手間がはぶけるかもしれません!
私は組むのが楽しくてつい時間を忘れてしまいますw
IF関数って?
これこれ。
日本語にすると
「もしA2が空白なら 、空白だったら空白にしておく、空白じゃなかったらA2+B2の結果を表示」
「""(ダブルクォーテーションが2つ)」で「空白」という意味になります。
=IF(A2="","",A2+B2)
「,(カンマ)」で意味を区切っています。
(条件 , YESの場合 ,NOの場合)
YES,NOで考えるとわかりやすいですよ!
0を消して「""」空白を使う!
これは会社に入社してから覚えた使い方!
よく見るこんな表。
小計、消費税をSUM関数で足します。
そのまま下へコピーすると・・・小計、消費税が空欄でも合計に「0」がでちゃいます。
なんかかっこ悪い!そんなときはIFの出番です。
「もしも小計が空白なら?
YES なら 空白なら空白
NO なら 小計と消費税を足して合計をだす」
ということです。
期間内に申込むと2割引にする 条件に日付を追加
もし~だったら、は空白以外にも応用できます!
11月30日までに申込むと2割引、それ以降は割り引きナシ
という条件をつけます。
先ほどの表に日付と割引の欄を追加しました。
=IF(A2*1<DATE(2013,12,1),C2*-0.2,"")
こんなかんじ!
=IF(A2*1<DATE(2013,12,1),C2*-0.2,"")
「<」は左の数字は右の数字より小さい という意味ですよね
ということは
もしも日付が12/1よりも小さいなら
YESなら小計×マイナス0.2
NOなら空白
という意味になります。
ちなみに、IF関数内での日付の扱い方は
日付に「*1」をするか「DATE(2013,12,1)」と表示します。
2013/12/1 だと2013÷12÷1の意味になりますので。
対象外商品もあるんだけど! IF関数の入れ子
※ただし対象外商品もございます
という場合。このまま入力してゆくと、11月中にお申し込みをいただいた商品は2割引にできますが、対象外商品も割り引かれてしまいます。
そんなときは、2回YES,NOを繰り返します!
具体的にはこんなカンジ。
=IF(COUNTIF(B3,"*M*"),"",IF(A3*1<DATE(2013,12,1),C3*-0.2,""))
もしB3に「M」が含まれているなら
YESなら空白
NOなら次の質問
もしA3が12/1よりも小さい日付なら
YESならC3×マイナス0.2
NOなら空白
日本語なら
もし品番に「M」が含まれているのなら
YES 空白(品番Mは割り引き対象外)
NO なら次の質問
もし日付が12/1よりも前なら
YESなら小計からマイナス2割(11月中が割り引き対象)
NOなら空白(12/1以降は割引適用外)
一つ目のIF~のYESには空白、NOには次の質問のためのIF関数がまるっと入っています。
=IF( 条件 , YES , NO → IF( 条件 , YES , NO ))
こうやって次々と質問をしてゆくことができるのです!
こんなチャートを書くと整理しやすいかも。
具体的にどんな風に組み立てるの?
料金が変わる条件と優先順位を全て紙に書き出します。
- Mは適用外 (12/1だろうとなんだろうと割り引かない)
- 以前に注文してくれた人は*-0.05 (M以外で日付は関係しない)
- 12/1以前の申し込みでさらに*-0.2 (M以外で、12/1以前に申し込みしたら2割引。M以外で12/1以前の申し込み、以前に注文してくれた人は2.5割引)
チャートにするとこんなかんじ。
実際に作ってみたらこんなかんじ。
=IF(COUNTIF(B5,"*M*"),"",IF(F5="",IF(A5*1<DATE(2013,12,1),C5*-0.2,""),IF(A5*1<DATE(2013,12,1),C5*-0.25,C5*-0.2)))
うーん、もっとスマートにまとめられたかもしれない。
まとめ
なれないうちは頭がこんがらがりますが、こうやって図に書いてひとつひとつ見ていけばなんてことないです。
とっても便利でよく使う関数なので、どんな表でも役に立つと思います!