OfficeType

Excel~IF関数で条件の真偽で表示を変えよう~エクセル

エクセルで指定した条件に一致する場合と一致しない場合に結果を分けるIF関数について説明します。

  • IF関数の書式はIF(論理式,値が真の場合,値が偽の場合)になります。
  • 論理式として真偽を判定する条件となる式を入力します。
  • 値が真の場合とは論理式を満たした場合に表示する結果を指定します。
  • 値が偽の場合とは論理式を満たさない場合に表示する結果を指定します。

文字列を条件にする

下の画像の例でセルC2にAさんが1班であれば〇を表示し、1班でなければ空白にしたい場合はセルC2に=IF(B2="1班","〇","")と入力しEnterを押します。

論理式はセルB2の班の項目が1班かどうか判定したいのでB2="1班"になります。

[値が真の場合]にはB2="1班"の条件を満たした場合に〇を表示したいので"〇"になります。

[値が偽の場合]にはB2="1班"の条件を満たさない場合は空白にしたいので""になります。

つまりセルC2に=IF(B2="1班","〇","")と入力しEnterを押すとAさんは1班なので論理式を満たすので〇が表示されます。

セルC2からセルC7までオートフィルすると1班の人はAさん、Dさん、EさんなのでセルC2,C5,C6に〇が表示され、それ以外の人は論理式を満たしていなので空白になります。

数値を条件にする

下の画像の例でセルB2にセルA2の数値が5以上であれば〇を表示し、5以上でなければ空白にしたい場合はセルB2に=IF(A2>=5,"〇","")と入力しEnterを押します。

論理式はセルA2の数値の項目が5以上かどうか判定したいのでA2>=5になります。

[値が真の場合]にはA2>=5の条件を満たした場合に〇を表示したいので"〇"になります。

[値が偽の場合]にはA2>=5の条件を満たさない場合は空白にしたいので""になります。

比較演算子は以下の表に対応しています。

比較演算子説明
>より大きい
<より小さい
=等しい
>=以上
<=以下
<>等しくない

つまりセルB2に=IF(A2>=5,"〇","")と入力しEnterを押すとセルA2の値5は5以上で論理式を満たすので〇が表示されます。

セルB2からセルB7までオートフィルすると各行のA列の数値が5以上ならば〇がB列に表示され、5以上でなければB列が空白になります。

空白を条件にする

下の画像の例でセルB2にセルA2が空白であれば"空白"と表示し、空白でなければ"データあり"と表示したい場合はセルC2に=IF(A2="","空白","データあり")と入力しEnterを押します。

論理式はセルA2が空白かどうか判定したいのでA2=""になります。

[値が真の場合]にはA2=""の条件を満たした場合に"空白"と表示したいので"空白"になります。

[値が偽の場合]にはA2=""の条件を満たさない場合は"データあり"と表示したいいので"データあり"になります。

つまりセルB2に=IF(A2="","空白","データあり")と入力しEnterを押すとセルA2は空白でないので[値が偽の場合]の"データあり"が表示されます。

セルB2からセルB7までオートフィルすると各行のA列が空白の場合はB列に"空白"と表示され、データがある場合は"データあり"と表示されます。

空白以外を条件にする

下の画像の例でセルB2にセルA2が空白でなければ"データあり"と表示し、空白であれば"空白"と表示したい場合はセルC2に=IF(A2<>"","データあり","空白")と入力しEnterを押します。

論理式はセルA2が空白でないかどうか判定したいのでA2<>""になります。

[値が真の場合]にはA2<>""の条件を満たした場合に"データあり"と表示したいので"データあり"になります。

[値が偽の場合]にはA2=""の条件を満たさない場合は"空白"と表示したいいので"空白"になります。

つまりセルB2に=IF(A2<>"","データあり","空白")と入力しEnterを押すとセルA2は空白でないので[値が真の場合]の"データあり"が表示されます。

セルB2からセルB7までオートフィルすると各行のA列が空白でない場合はB列に"データあり"と表示され、空白の場合は"空白"と表示されます。

日付を条件にする

下の画像の例でセルB3にセルA3の日付が2016/9/29以前であればセルB3に"期限内"と表示し、2016/9/29以前なければ"期限外"と表示したい場合はセルA3に=IF(A3<=DATE(2016,9,29),"期限内","期限外")と入力しEnterを押します。

論理式はセルA3が2016/9/29以前であるか判定したいのでA3<=DATE(2016,9,29)になります。DATE関数はDATE(年,月,日)で日付を返します。

[値が真の場合]にはA3<=DATE(2016,9,29)の条件を満たした場合に"期限内"と表示したいので"期限内"になります。

[値が偽の場合]にはA3<=DATE(2016,9,29)の条件を満たさない場合は"期限外"と表示したいいので"期限外"になります。

つまりセルB2に=IF(A3<=DATE(2016,9,29),"期限内","期限外")と入力しEnterを押すとセルA2の日付は2016/9/29以前なので[値が真の場合]の"期限内"が表示されます。

セルB2からセルB7までオートフィルすると各行のA列の日付が2016/9/29以前であればB列に"期限内"と表示され、2016/9/29以前でなければB列に"期限外"と表示されます。

別セルの文字列を参照して条件にする

下の画像の例で論理式にセルA2を参照してセルC5にAさんが1班であれば〇を表示し、1班でなければ空白にしたい場合はセルC5に=IF(B5=$A$2,"〇","")と入力しEnterを押します。オートフィルした時に範囲がズレないように論理式に絶対参照$を使用しています。

論理式はセルB5の班の項目がセルA2の1班かどうか判定したいのでB5=$A$2になります。

[値が真の場合]にはB5=$A$2の条件を満たした場合に〇を表示したいので"〇"になります。

[値が偽の場合]にはB5=$A$2の条件を満たさない場合は空白にしたいので""になります。

つまりセルC5に=IF(B5=$A$2,"〇","")と入力しEnterを押すとAさんは1班なので論理式を満たすので〇が表示されます。

セルC5からセルC10までオートフィルすると1班の人はAさん、Dさん、EさんなのでセルC2,C5,C6に〇が表示され、それ以外の人は論理式を満たしていなので空白になります。

セルA2の条件を書き換えればセルC5からセルC10の結果も瞬時に変わります。

別セルの数値を参照して条件にする

下の画像の例で論理式にセルA2の数値5を参照してセルB5にセルA5の数値が5以上であれば〇を表示し、5以上でなければ空白にしたい場合はセルB5に=IF(A5>=$A$2,"〇","")と入力しEnterを押します。オートフィルした時に範囲がズレないように範囲に絶対参照$を使用しています。

論理式はセルA5の班の項目がセルA2の値5以上かどうか判定したいのでA5>=$A$2になります。

[値が真の場合]にはA5>=$A$2の条件を満たした場合に〇を表示したいので"〇"になります。

[値が偽の場合]にはA5>=$A$2の条件を満たさない場合は空白にしたいので""になります。

つまりセルB5に=IF(A5>=$A$2,"〇","")と入力しEnterを押すとセルA5の値5は5以上で論理式を満たすので〇が表示されます。

セルB5からセルB10までオートフィルすると各行のA列の数値が5以上ならば〇がB列に表示され、5以上でなければB列が空白になります。

セルA2の条件を書き換えればセルC5からセルC10の結果も瞬時に変わります。

AND関数との組み合わせ

IF関数はAND関数と組み合わせて使えば複数の論理式を全て満たした場合と、1つでも満たさなかった場合で結果を分けて表示できます。

下の画像の例でセルD2にAさんが1班の30歳以上の条件を満たせば〇を表示し、満たさなければ空白にしたい場合はセルD2に=IF(AND(B2="1班",C2>=30),"〇","")と入力しEnterを押します。

IF関数の論理式にAND(B2="1班",C2>=30)を指定すればAND関数は、セルB2が1班でセルC2が30以上の条件を全て満たせばTRUEを返し、この場合はIF関数の[値が真の場合]が表示されます。AND関数の条件が1つでも満たされない場合はFALSEを返しIF関数の[値が偽の場合]が表示されます。

IF関数の[値が真の場合]にはAND関数の条件を満たした場合に〇を表示したいので"〇"になります。

IF関数の[値が偽の場合]にはAND関数の条件を満たさない場合は空白にしたいので""になります。

つまりセルD2に=IF(AND(B2="1班",C2>=30),"〇","")と入力しEnterを押すとAさんは1班の30歳以上なので論理式を全て満たすので〇が表示されます。

セルD2からセルD7までオートフィルすると1班の30歳以上の人はAさんとEさんなのでセルD2,D6に〇が表示され、それ以外の人は全ての論理式を満たしていなので空白が表示されます。

OR関数との組み合わせ

IF関数はOR関数と組み合わせて使えば複数の論理式のうち1つでも満たした場合と、1つも満たさなかった場合で結果を分けて表示できます。

下の画像の例でセルC2にAさんが1班または2班の条件を満たせば〇を表示し、満たさなければ空白にしたい場合はセルC2に=IF(OR(B2="1班",B2="2班"),"〇","")と入力しEnterを押します。

IF関数の論理式にOR(B2="1班",B2="2班")を指定すればセルB2が1班または2班の条件を満たせばTRUEを返し、この場合はIF関数の[値が真の場合]が表示されます。OR関数の条件が1つも満たされない場合、今回の場合は3班の時はFALSEを返し、セルB2にIF関数の[値が偽の場合]が表示されます。

IF関数の[値が真の場合]にはOR関数の条件を満たした場合に〇を表示したいので"〇"になります。

IF関数の[値が偽の場合]にはOR関数の条件を満たさない場合は空白にしたいので""になります。

つまりセルC2に=IF(OR(B2="1班",B2="2班"),"〇","")と入力しEnterを押すとAさんは1班なので論理式を満たすので〇が表示されます。

セルC2からセルC7までオートフィルすると3班の人はCさんとFさんなので、セルC4、C7は条件を満たさず空白になります。それ以外の人は条件を満たしているので〇が表示されます。

結果を3個以上に分けたい場合

IF関数で結果を3個以上に分けたい場合、[値が真の場合]や[値が偽の場合]をIF関数にすれば分けられます。

下の画像の例でセルB2にセルA2の数値が0未満であれば"負"、0であれば"ゼロ"、0より大きければ"正"と表示したい場合はセルB2に=IF(A2<0,"負",IF(A2=0,"ゼロ","正"))と入力しEnterを押します。

論理式はセルA2の数値が0未満かどうか判定したいのでA2<0になります。

[値が真の場合]にはA2<0の条件を満たした場合に"負"と表示したいので"負"になります。

[値が偽の場合]にはA2<0の条件を満たさない場合に、さらに"ゼロ"と"正"に分けたいのでIF(A2=0,"ゼロ","正")とし、セルA2の値が0であれば"ゼロ"、0でなければ"正"となります。

つまりセルB2に=IF(A2<0,"負",IF(A2=0,"ゼロ","正"))と入力しEnterを押すとセルA2の値2は0より大きので"正"が表示されます。

セルB2からセルB6までオートフィルすると各行のA列の数値が0未満ならば"負"、0ならば"ゼロ"、0より大きければ"正"がB列に表示されます。