エクセルを使い慣れてくると、数式で計算させたり、その数式を縦(行方向)や横(列方向)にコピーして繰返し計算させることがよくあります。その際、列や行の条件によって、計算式を変えたいことはありますね。
IF関数を使うことで、条件により処理・計算式を分岐することが可能になります。 判断したいセルに入っているのが数字なのか文字列なのかで、IF関数の中の書き方が変わってきますのでそれぞれについて説明いたします。
IF関数の使い方
IF関数の使い方は、表示したいセルに、
「=IF(条件式, 真の場合の数式, 偽の場合の数式) 」
と書きます。
「条件式」に書いた条件によって、条件が満たされていると判断されたときは、「真の場合の数式」がセルの値になり、条件が満たされてないと判断されたときは「偽の場合の数式」がセルの値となります。
そして条件式で判断したいことによって式の書き方が変わりますので、
- 数字同士の大小比較の場合
- 文字列が同じかどうかの比較の場合(完全一致)
- 文字列が含まれるかの比較をしたい場合
について、順番に説明致します。
数字同士の大小比較の場合
例えば セルのA1 と B1 の値を比較するとき、次の不等号を条件式に書きます。
数字比較の条件式 | 意味 |
A1 > B1 | A1がB1より大きいとき真となる |
A1>= B1 | A1がB1より大きいか等しいとき真となる |
A1 = B1 | A1とB1が等しいとき真となる |
A1 < B1 | A1がB1より小さいとき真となる |
A1 <= B1 | A1がB1より小さいか等しいとき真となる |
A1 <> B1 | A1とB1が違う数字のとき真となる |
数字比較をしている例を一つあげます。家計簿の例ですが、C列に消費金額があり、K列には高額出費として5,000円以上の金額を表示したいとします。
3行目に注目しますと、金額セルC3が5000円以上のときだけ、K3に金額を表示したいため、
K3の数式:「=IF($C3 >= 5000, $C3, “”) 」
としています。5000円未満のものは空白となるように “” としています。C3 は3500円のため、K3は空白が入ります。
補足:
セル「C3」のところが「$C3」と、列を示すCの前に「$」をつけています。これは列を絶対参照にしていることを意味します。これは、K3の数式を例えば一つ隣の列L3 にコピーしたとき、Cが一つ隣のDに書き換わるのを避けるためです。K3の数式はこのままK4以降の行にコピーすることができます。
文字列が同じかどうかの比較の場合(完全一致)
指定した文字列と全く同じかどうかであれば、= で比較することができます。また、同じでないときに真となるように条件式を書く場合は <> を使います。
先程の家計簿の例をあげます。列I に項目名が「電気」の金額だけ計上したいと仮定します。
3行目に注目して、例えばセルのD3, I2に文字列が入っていて、それぞれを比較したいときは次のように条件式に書きます。
文字列比較の条件式 | 意味 |
D3 = I2 | 文字列 D3 と I2 が完全に一致するとき真 |
D3 <> I2 | 文字列 D3 と I2 が一致しないとき真 |
例では、項目が「電気」であるものだけ金額を計上したいため、
I3の数式:「=IF($D3=I$2,$C3,””)」
というようにしています。I2に「”電気”」という文字列が入ってますので、この数式は、
I3の数式:「=IF($D3=”電気”,$C3,””)」
と同じ意味になります。
補足:
セルを指定する際、「$」は絶対参照を意味します。
$D3, $C3のように列だけ絶対参照になっている理由は、I3の数式を例えば一つ隣のJ3にコピーした時、Dが一つ隣のE列に置き換わるのを避けるためです。Cも同様にD列に置き換わるのを防ぐためです。
また、I$2は、行だけを絶対参照しています。こちらの理由も先程の列と同様ですが、例えば、I3の数式を、I4より下にコピーしたとき、D3, C3の部分は D4、D5、・・・・と変わっていってほしいのですが、「電気」と入っているセルI2は、I3、I4、・・・・と置き換わってほしくないために絶対参照としています。実際に例の図では、I3の数式をI4より下のI列にコピーしています。D列が「電気」の項目だけ金額が計上されているのがわかります。
文字列が含まれるかの比較をしたい場合
IF関数の条件式では、文字列の完全一致でなく、文字列○○が含まれるかの判断をしたい場合 = や <> では実現することができません。
実現方法は幾つかあるのですが、一番簡単なのが条件式にCOUNTIF関数を使うことです。
同じく家計簿の例ですが、Hの列に外食費を計上したいとします。
項目セルD3に 「外食」という文字列が含まれているとき、C3の値を計上したいので、
H3の数式:「=IF(COUNTIF(D3,”*外食*”),C3,””)」
とすることで実現できます。
H2に「外食」という文字列が記入されている場合、このセルを利用して、
H3の数式:「=IF(COUNTIF($D3,”*” & H$2 & “*”),$C3,””)」
というように、「&」で「*」と「外食」と「*」の文字列をつなげることができます。
補足:
COUNIF関数は、
=COUNTIF(範囲, 検索条件)
のように使い、範囲に指定したセル群のうち、検索条件にあうセルの個数を返答する関数となっております。
この検索条件にはワイルドカード(*)を使えるため文字列が含まれるかの判断に使えるのです。ワイルドカード(*)は、任意の文字列、しかも空文字 (文字なし) でも良いという便利なものです。
例えば、「食費」という文字列が含まれるものを検索するためには、検索条件に 「*食費*」 と指定します。
IF関数の条件式にもワイルドカードが使えれば良かったのですが現状できません。その代わり条件式に他の関数を使うことができます。
条件式に書かれた関数の結果(戻り値)が 0 なら「偽の場合の数式」が選択され、それ以外(マイナスの値でも)であれば、「真の場合の数式」が選択されます。
最後に
今回はIF関数を使った条件判断について説明いたしました。
また、この例のように日付、金額、項目さえ入力してあれば、実は「ピボットテーブル」を使うと簡単に集計できてしまいます。
ピボットテーブルについては、記事「エクセルのピボットテーブルを使って簡単にデータ集計できます」で詳しく説明しています。もし集計したいデータがあったらぜひ読んでみてください。
コメント