OfficeType

Excel~OR関数で複数の条件の1つでも条件を満たすか判定しよう~エクセル

エクセルで複数の条件うち1つでも条件を満たしているか判定するOR関数について説明します。

  • OR関数の書式はOR(論理式1,[論理式2],・・・) になります。
  • 論理式1は一つ目の条件を指定します。
  • [論理式2]以降は2つ目の条件、3つ目の条件・・・と指定します。
  • 全ての論理式のうち1つでも条件を満たす場合はTRUE、全ての論理式を満たさない場合はFALSEを返します。

文字列を条件にする

下の画像の例でAさんが1班か2班であるかの判定をセルC2に表示したい場合はセルC2に=OR(B2="1班",B2="2班")と入力しEnterを押します。

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

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

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

セルC2からセルC7までオートフィルすると1班か2班の人はTRUEが表示され、3班の人は条件を1つも満たさないのでFALSEが表示されます。

数値を条件にする

下の画像の例でセルB2にセルA2の数値が3未満または7以上かどうかの判定を表示したい場合はセルB2に=OR(A2<3,A2>=7)と入力しEnterを押します。

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

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

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

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

つまりセルB2に=OR(A2<3,A2>=7)と入力しEnterを押すとセルA2の数値5は論理式を1つも満たさないのでFALSEが表示されます。

セルB2からセルB7までオートフィルすると各行のA列の数値が3未満または7以上の場合はTRUE、それ以外はFALSEがB列に表示されます。

空白を条件にする

下の画像の例でセルC2にセルA2のデータ1とセルB2のデータ2がどちらか、または両方が空白かどうかの判定を表示したい場合はセルC2に=OR(A2="",B2="")と入力しEnterを押します。

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

論理式2はデータ2の項目のセルB2が空白かどうか判定したいのでB2=""になります。

つまりセルC2に=OR(A2="",B2="")と入力しEnterを押すとセルA2とセルB2は空白でないので全ての論理式を満たさないのでFALSEが表示されます。

セルC2からセルC8までオートフィルすると各行の各行のA列とB列のどちらか、または両方が空白なのはセルC4,C5,C7なのでTRUEが表示され、それ以外はFALSEが表示されます。

空白以外を条件にする

下の画像の例でセルC2にセルA2のデータ1とセルB2のデータ2のどちらか、または両方が空白でないかどうかの判定を表示したい場合はセルC2に=OR(A2<>"",B2<>"")と入力しEnterを押します。

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

論理式2はデータ2の項目のセルB2が空白でないかどうか判定したいのでB2<>""になります。

つまりセルC2に=OR(A2<>"",B2<>"")と入力しEnterを押すとセルA2とセルB2は空白でないので全ての論理式を満たしTRUEが表示されます。

セルC2からセルC8までオートフィルすると各行のA列とB列のどちらも空白なのはセルC7なので、全ての論理式を満たしていなのでFALSEが表示されます。それ以外はどちらか、または両方が空白でないので論理式の1つまたは両方を満たしているのでTRUEが表示されます。

日付を条件にする

下の画像の例でセルB3にセルA3の日付が2016/9/28より前または2016/10/3より後の日付であるか判定したい場合はセルC3に=OR(A3<DATE(2016,9,28),A3>DATE(2016,10,3))と入力しEnterを押します。

論理式1はセルA3の日付が2016/9/28より前かどうか判定したいのでA3<DATE(2016,9,28)になります。DATE関数はDATE(年,月,日)で日付を返します。

論理式2はセルA3の日付が2016/10/3より後の日付かどうか判定したいのでA3>DATE(2016,10,3)になります。

つまりセルB3に=OR(A3<DATE(2016,9,28),A3>DATE(2016,10,3))と入力しEnterを押すとセルA3の日付2016/9/26は期間内なのでTRUEが表示されます。

セルB3からB8までオートフィルすると各行のA列の日付が期間内のセルB3、B4、B8はTRUEが表示され、それ以外はFALSEが表示されます。

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

下の画像の例でOR関数の条件にセルA2とセルA3を参照してセルC6にAさんが条件の1班か2班であるかどうかの判定を表示したい場合は=OR(B6=$A$2,B6=$A$3)と入力しEnterを押します。オートフィルした時に範囲がズレないように絶対参照$を使用しています。

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

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

つまりセルC6に=OR(B6=$A$2,B6=$A$3)と入力しEnterを押すとAさんは1班なので論理式1を満たすのでTRUEが表示されます。

セルC6からセルC11までオートフィルすると1班か2班の人はTRUEが表示され、3班の人は条件を1つも満たさないのでFALSEが表示されます。

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

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

下の画像の例でOR関数の条件にセルA3とセルB3を参照してセルB6にセルA6の数値が2以下または5以上かどうかの判定を表示したい場合はセルB6に=OR(A6<=$A$3,A6>=$B$3)と入力しEnterを押します。オートフィルした時に範囲がズレないように範囲に絶対参照$を使用しています。

論理式1は数値の項目のセルA6がセルA3の条件、2以下かどうか判定したいのでA6<=$A$3になります。

論理式2は数値の項目のセルA6がセルB3の条件、5以上かどうか判定したいのでA6>=$B$3になります。

つまりセルB6に=OR(A6<=$A$3,A6>=$B$3)と入力しEnterを押すとセルA6の数値1は論理式1を満たすのでTRUEが表示されます。

セルB6からセルB11までオートフィルすると各行のA列の数値が2以下または5以上の場合はTRUE、それ以外はFALSEがB列に表示されます。

セルA3とセルB3の条件を書き換えればセルB6からセルB11の結果も瞬時に変わります。

IF関数との組み合わせ

OR関数はIF関数と組み合わせて使えばOR関数がTRUEの時とFALSEの時の表示を指定できます。

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

IF関数の書式はIF(論理式,[値が真の場合],[値が偽の場合])になります。

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

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

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

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

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