では、もう一歩進んで、複数条件での問題を解いていってみましょう。
表の中で2018/01/15のばななだけ¥130になっていることが気になりましたか?
特売日で安かったのでしょう。
たった8行の情報なので、簡単に気付くことが出来ますが、情報量が多くなったら探すのは大変です。
では、関数の数式で見つけていきましょう。
G5セルに「もしも、C5がりんご、かつD5が¥100じゃなかったら差額を、違うなら0を」表示させましょう。
IF文に「~かつ」というのが入ってきましたね。
「~かつ」という条件の時はAND関数を使います。
=IF(AND(C5=$G$2,D5<>100),D5-100,0)
AND関数は
=AND(条件1、条件2、条件3、・・・)
と、続けていくことが出来ます。
「~かつ」ということなので、全ての条件に一致する場合にTRUEを返す。という挙動です。
さらっと、新しく入ってきている細かい部分も一応解説します。
まず$は前項と同じ絶対参照なので、理解は後回し。
<>という記号はいわゆる不等号で大きくも小さくも無いから一致しないということです。
まぁ等しくないという式と違いはあるのですが、D5<>100の意味はD5が100じゃないということと認識しておいてください。
¥100じゃないって話なのに、式には100ってなってるということも、今回入ってます。
表計算ソフトでは、セルに入っている情報と、表示される値が違うことがあります。
=で書いてきた式もセルには式が入っていても、表示は結果の値でしたよね?
¥100というのは、数値100を通貨形式(円)かつ小数点以下表示0で表したものなので、正確な値は100となるということです。
時々、実は文字列で¥100って書いてある資料に出会ったりすることもあってびっくりしますが、本来の用途は上記になるので、注意が必要です。
表示形式の変更はスプレッドシートでは、ツールバーに「¥」(表示形式を通貨に設定)というボタンと、「.0←」(小数点以下の表示を減らす)を使うと出来ます。
この辺も色々いじって脱線しておきましょう。
さぁ、表のように出来ましたか?
でも、その前に通常価格から変わってるのがあるのか、いっぺんに調べたい。
えーと、定義を文章化すると・・・。
りんごかつ¥100じゃない、または、みかんかつ¥80じゃない、または、ばななかつ¥150じゃない、という条件にあったら”価格が違う”って表示、それ以外は空白にする。
G列の単価チェックってとこに式を入れて表示させてみましょう。
今度はOR関数です。
当然ながら、「~または、」のためのもので、AND関数と使い方はほぼ一緒です。
複数の条件を指定して、どれかが一致すればTRUEを返します。
G3セルに入れる式は
=IF(OR(AND(C3=”りんご”,D3<>100),AND(C3=”みかん”,D3<>80),AND(C3=”ばなな”,D3<>150)),”価格が違う”,””)
となります。
ここ、難しいかもしれませんが、プログラミングの基礎が入っていて重要です。
条件に見合った結果を出す式を導き出せるかどうかってことなんですが、なぜこうなるのかを理解するためには、分解して繋ぎなおしてどこを変えるとどうなるのかの実験を繰り返すことが必要です。
時には逆説的に考えて、りんごが100円だったら”りんご正解”って出すという解決法もあります。
柔軟な考え方で試して、自分の技術としてモノにしていってください。
ちなみに、ANDとORを入れ替えたら全然違う結果が出ますから条件にあっているのか良く考えつつ、結果もあっているのか必ず確認しましょう。
コメント