教室のMOS対策講座の中で、生徒さんにご紹介した内容から掲載している【MOS対策のヒント】。
今回は、「IF関数と、AND/OR」をとりあげます。(MOS2013以降は、エキスパート資格の範囲に入っています。)
IF, AND, OR……とにかくまったく理解できない……
IF関数、そしてAND、ORなどの「論理演算」関数は、「とにかくまったく分からない」「理解できない」という声がよく上がる項目です。
- 変な記号が出てくる。(>,<,=)
- かっこ ( ) がたくさん出てきて、訳が分からなくなる。
- しかも、一つで済むのじゃなく、いろいろ複合することが多い。
これを使いこなすには、関数そして「論理式」についての深い理解が必要となります。
といっても、それなりに「分かりやすい学習法」というものはありまして、当教室でもこの方法でレッスンを行うことがあります。
IF関数は部品ひとつずつに分解して理解しよう
例えば次のようなIF関数があるとします。
=IF(AND(E5>=$E$2,F5>=$F$2),”達成”,”未達”)
一見すると大変複雑ですが、あわてずじっくりと理解していくことにします。
実際に分解してみよう!
一つ一つの部品を実際にExcelのセルに入力して、計算結果を確かめてみることで、理解が深まります。普段けっしてやらない操作だと思いますが、あえてやってみましょう。
条件式の部分
まずは、この赤枠の部分、「条件式」が一体どういう役割を果たしているのか、実際にExcelに計算させてみます。
まず、「E5>=$E$2」を実際に余白のセルに代入してみましょう。数式として計算させるため、先頭に「=」をつけて「=E5>=$E$2」と入力します。
つまり、田中さんが上期に目標を達成したか?を判定する式だということですね。
結果はこうなります。
結果は「TRUE」…… なんだこりゃ!!
このように、「< > =」などを使った論理式を単独で計算させると、結果は「TRUE」または「FALSE」となります。これを「論理値」といいます。
普通、数式の答えは「123」とか「50000」といった、数字になりますね。しかし、条件式の場合だけは違うのです。
- 条件式 「3>2」→結果「TRUE」(3は2より大きい)
- 条件式 「3<2」→結果「FALSE」(3は2より小さくない)
- 条件式 「3>=3」→結果「TRUE」(3は3以上である。)
- 条件式 「3>3」→結果「FALSE」(3は3より大きくない)
このように、等号・不等号で表された「条件」を満たせば「TRUE」、満たさなければ「FALSE」という結果になります。
もとのシートにもどってみますと、
- 29133>=28000 →TRUE
- 28563>=29000 →FALSE
という結果になります。
TRUE,FALSEは、「ホント」と「ウソ」!
ちなみに、TRUE, FALSEといっていますが、訳すると「ホント」と「ウソ」です。
(正式には、「真」と「偽」というのですが、まぁいいじゃないですか)
もし論理式を日本人が発明していたら、今頃エクセルには「ホント」「ウソ」って表示されていたかもしれませんよ……
AND/OR関数は「赤あげて、白あげて……」の役割!
それでは、いまの結果をもとに、その「外側」、AND関数を見てみます。
このままではややこしいので、さきほど既に求めたTRUE, FALSEの結果を、直接ここに書いてみましょう。
前半E5>=$E$2が「TRUE」、後半F5>=$F$2が「FALSE」でしたね。
なんとシンプルになりましたね。それではEnterを押して計算させてみます。
結果は「FALSE」でした。
AND関数とは、次のような結果を返す関数です。
- =AND(TRUE,TRUE) →結果「TRUE」
- =AND(TRUE,FALSE) →結果「FALSE」
- =AND(FALSE,FALSE) →結果「FALSE」
つまり、AND関数は中身が全部TRUEの時だけ結果が「TRUE」になる関数です。中身はいくつあっても大丈夫で、同じように「全部TRUEか?」というチェックをしています。
ちなみにOR関数は次のような結果を返します。
- =OR(TRUE,TRUE) →結果「TRUE」
- =OR(TRUE,FALSE) →結果「TRUE」
- =OR(FALSE,FALSE) →結果「FALSE」
OR関数は、中身に一個でもTRUEがあれば結果は「TRUE」になります。
このように、AND,ORなどの論理関数は、中身をチェックしてそれぞれ「TRUE」「FALSE」を返す、ただそのためだけに存在してる関数です。
SUM関数やAVERAGE関数を使ってきた身からは、なんだか変な関数だな、と感じるかもしれませんが、
赤あげて、白あげて……をやってくれる関数だ、と覚えてもらえればいいと思います。
いよいよIF関数全体をみてみる
では、「中身」の結果が全部でたので、いよいよIF関数全体を見てみます。
いままで確認した結果を直接入れてみると
とってもシンプルになりました。それで、計算結果はというと
- IF(TRUE,”達成”,”未達”) →結果「達成」
- IF(FALSE,”達成”,”未達”) →結果「未達」
というわけですね。残念、田中さんは、上期だけ達成しましたが、年間では達成とみなされませんでしたー( ;∀;)
部品を一つずつ作っていけば、複雑なIF関数はこわくない
いまお見せしたのは、できあがった数式を分解して、一つ一つの要素ごとに計算させる過程でしたが、実際に数式を自分で一から作るときは、同じように部品ひとつずつ完成させていくとよいのです。
できた部品をひとつずつ取り付けていけば、間違いも起きにくいと思います。 かっこ( )が ((()))みたいにたくさん重なっていても、順番に一つずつ作っていけば間違いにくいです。
時間はかかりますが、間違うよりはずっといいし、やっているうちに仕組みが分かってきます。すると、だんだん、いっぱつで全部書けるようになってきます。
お試しください!
コメント
おはようございます。
フォントの取り消し線で対応できそうです。
それで、お教えいただいた「訂正済み」フィールド以外をCOUNTで数える方法で
カウントしてできそうです。
お忙しい中、ご対応、ご教授頂き
ありがとうございました。
早速のご解答ありがとうございました。
罫線の状態を取得する関数はやはりないのですね。
>その「1」に反応して斜線を自動で引く「条件付き書式」を設定すると言った案が考えられます。
ですが、
「条件付き書式」で罫線が縦、横は選択できるのですが、
斜めは選択できないようになってました。
又、塗りつぶしでは斜めでも縞でした。
「条件付き書式」で斜め罫線の引き方とは通常の罫線の斜めではないのでしょうか。
すいません、知識が浅く、「条件付き書式」での罫線の斜線がみつけることができなかったです。
「条件付き書式」での罫線の斜線の引き方をご教授いただければ幸いです。
お忙しい中、ご迷惑おかけします。
お願い致します。
ああ、本当ですね、条件付き書式のダイアロクでは、斜め罫線がグレーアウトして押せないですね。
すみません、試さず返信してしまって。ご指摘ありがとうございます。
代用できそうなのは「フォント」の「取り消し線」でしょうか。これならば、消したのだということは分かりそうです。
こんばんは。
いつもお世話になります。
斜線(セルの書式設定の斜線の右上がり)したもの以外をカウントしたく、
斜線したセルは訂正したもの)以外をカウントしたく、
if関数やcount関数系でいろいろためしてみたのですが、
方法がみつかりませんでした。
ネット検索すると
VBAでの方法しかないとの解答しかなく、
ご教授頂きたく
ご相談させて頂きました。
ご多忙の中、ご迷惑おかけしますが
ご教授宜しくお願い致します。
こんにちは、コメントありがとうございます。
セルの値に関する関数はたくさんありますが、セルの書式に反応する関数は、実はありません。
色とか罫線ではなく「数値の表示形式」だけは、CELL関数によってあるていど情報がとれますが、罫線の状態を取得する関数はありません。
VBAを使いたくない、ということであれば、ちょっと一工夫が必要です。例えば、斜線を引く操作をして斜線を引くのではなく、「訂正済み」というフィールドを作って「1」と入力し、その「1」に反応して斜線を自動で引く「条件付き書式」を設定すると言った案が考えられます。
そうすると、カウントする際は、その「訂正済み」フィールドをCOUNTで数える、または、「1」を入れているならばSUMで合計しても同じ結果です。