エクセルでよくつかわれる関数の1つがIF関数です。
「IF=もし」という意味で、特定の条件に応じて処理を変えることができます。テストで50点以上とったら「○」、それ以下は「x」と表示するなんてことができます。
ここではIF関数の使い方、分岐が複雑になった場合の対応などについてまとめていきます。
IF関数の練習
IF関数は、「もしもセルの数値が1以上だったら」とか「もしもセルに日本ハムという文字がはいっていたら」などの条件を設定して、それぞれに応じた処理を変更できるというものです。
練習データ
「リンク先を保存する」でダウンロードしましょう。
http://komatter.com/_EXCEL/ex-if.xlsx
またはCSVファイル:
http://komatter.com/_EXCEL/ex-if.csv
下記テーブルをコピーして、エクセルでA1に「名前」のところが来るようにペーストしましょう。
名前 | 国語 | 算数 |
---|---|---|
吉田 | 70 | 51 |
野村 | 45 | 49 |
万波 | 51 | 40 |
柿木 | 80 | 85 |
海老原 | 76 | 欠席 |
IF関数の練習1
国語の成績で70点未満は追試とします。
関数を使って追試の人を調べましょう。
以下のようになればOKです。
「解答」
正解は
↓
↓
↓
↓
↓
↓
↓
「E2」に「=IF(B2<70,"追試","")」
「E3」に「=IF(B3<70,"追試","")」
「E4」に「=IF(B4<70,"追試","")」
「E5」に「=IF(B5<70,"追試","")」
「E6」に「=IF(B6<70,"追試","")」
と入ります。
IF関数の練習2
国語も算数も70点未満の場合に追試とする場合の関数を記述しましょう。
以下のようになればOKです。
「解答」
正解は
↓
↓
↓
↓
↓
↓
↓
「E2」に「=IF(B2>=70,"",IF(C2>=70,"","追試"))」
「E3」に「=IF(B3>=70,"",IF(C3>=70,"","追試"))」
「E4」に「=IF(B4>=70,"",IF(C4>=70,"","追試"))」
「E5」に「=IF(B5>=70,"",IF(C5>=70,"","追試"))」
「E6」に「=IF(B6>=70,"",IF(C6>=70,"","追試"))」
と入ります。
IF文を2回使うのがポイントです。
IF関数の説明
IF関数
「IF(条件 , 条件に合致したときの処理)」で、条件とその時に実行する処理をかきます。
ある条件で処理を行う
例えばあるセルに「=IF(A2="吉田輝星" ,"球が速い" )」と書きます。
するとA2のセルが「吉田輝星」であれば、「球が速い」と表示します。
この場合、条件に見合わない場合は「FALSE」と出てきてしまうのが難点です。
そこで条件に見合わない場合の処理の書き方も覚えましょう。
条件に合う時、合わないときで処理を分ける
また、条件に合わない場合の処理も書くことができます。
「IF(条件, 条件に合致したときの処理,条件に合致しないときの処理)」で、条件とその時に実行する処理、条件に合わない場合の処理と記述していきます。
例えばあるセルに「=IF(A3="吉田輝星","球が速い","吉田選手ほど速くない")」と書きます。
これで野村選手は(いい選手なんですが)「吉田選手ほど速くはない」と表示させることができました。
ただし甲子園ではエースで登場した野村選手は内野手として指名されているので記述は変更したいところです。
複数の条件を記述する
IF条件をIF条件の中に入れて、複数の条件での処理を記述することができます。
例えばある人が吉田輝星でない場合で、投手であればxx、投手でない場合はxx」といった処理です。
以下では「=IF(A3="吉田輝星","球が速い",IF(C3="投手", "吉田選手ほど速くない", "野手です")」とし、IF文を2ついれた内容を実行したものです。
IFS関数
複数条件を3つ以上使うには、IFS関数を使いましょう。
オフィス365版オフィス2016や、オフィス2019ではIFS関数が利用できます。
これは条件と結果をずらずらと書いていくことができるというものです。
「IFS(条件1, 条件1の処理, 条件2, 条件2の処理 …)」です。
例えば点数によって評価を切り替える処理をしたい場合、「=IFS(B1>80,"よくできました",B1>40,"がんばったね",B1>10,"もっとがんばろう",B>=0,"今後に期待")」といった感じで条件と結果をつらつらっと書いていきます。
SUMIF関数
- 機能:ある条件にあう数値だけ合算します。
- 書き方:SUMIF(範囲, 検索条件, 合計範囲)
COUNTIF関数
- 機能:ある条件にあう数値だけカウントします。
- 書き方:COUNTIF(範囲, 検索条件)
IFERROR
- 機能:エラーがある場合の処理を記述できます。
- 書き方:IFERROR(値, エラーの場合の処理)
指定セルがブランクなら、他のセル値を表示
ブランク(空白)かどうかを判定します。
例えば「A1<>""」という条件はA1が空白でないことを表します。
A1が空白でなければA1を、空白ならB1を表示するには「=IF(A1<>"",A1,B1)」のように書きます。
IF関数の不具合
IF関数の処理が重い?
無駄にたくさんIF関数を使うと、それだけで動作が重くなるなどの影響が出ます。
IF関数を使う場合でも、セルに数値データがない場合はなにもしない、などの記述を先にさせると、処理をスキップさせやすくなります。
例えば「=IF(B7="","",B7*10)」とすれば、B7に数値がない場合は空欄のままです。データがある場合のみ掛け算を実行します。
カッコや引数の数を確認する
よくあるのは、IF文がきちんとかけていない場合や勘違いをしてしまう場合です。
IFにつづくカッコやコンマが抜けていないか、引数が多すぎたり少なすぎたりしないか今一度確認してみましょう。
文字のとじを確認する
引数で関数の勘違いや文字をカッコでとじない場合などにおきます。
例えばTODAY関数をTODAY()とかくべきところをTODAYとだけ書いてしまうとエラーになります。
=IF(A1<TODAY,"ok","no")
また、文字列としてクォーテーションで区切りを入れていない場合にもエラーになります。
参照先を確認する
参照先を間違ていないか確認してみましょう。
削除してしまったり、自分のセル番号をしてしてしまったりするとエラーになります。
計算内容を確認する
単純な足し算や掛け算の大小を見るだけなら比較的間違いを探しやすいと思います。
が、日付計算や文字が入ってくるとイメージしている結果とは違う値が算出される可能性があります。
エラーがあるか調べるには?
エラーがあるか調べる関数というものもあります。
IFERROR関数で「もしエラーの場合は」という処理を記述できます。
例えば「=IFERROR(1/0,"失敗しました")」の場合、1を0で割ることはできませんから条件はエラーとなっています。そのため、”失敗しました”という文字を表示します。
どこでエラーができているかわからない場合にこの関数をうまく使うと発見できるかもしれません。