- IF関数で日付条件にする方法が知りたい
- IF関数で日付を条件にしようとしているけどうまくいかない・・・
そんな思いにお応えできるようこの記事では、
- IF関数で日付を条件にする方法
- IF関数で日付を条件にしてもうまくいかないときの原因と対策
について解説しています。
IF関数については、【エクセル】IF関数のまとめ!基本から応用まで解説の記事で使い方をまとめているので、こちらの記事も是非ご参考下さい。
IF関数で日付を条件にする方法
例えば一覧から、入社日が2000年以降の人をチェックしたいという場合を想定します。
まずはD4セルを対象に、E4セルにIF関数の式を作っていきます。
通常通り、=IFから始めます。
次に、条件として「入社日が2000/1/1以降」のため
=IF(D4>="2000/1/1",
とやりたくなるのですが、実はこれではうまくいきません。
下記のように、期待した結果と実際の結果が異なってしまいます。
IF関数の中で日付を条件とする場合は、DATEVALUE関数を使うとうまくいきます。
方法としては下記の通り、日付部分をDATEVALUE関数の引数とするだけです。
正常な結果が返されていますね。
全てのセルに適用した場合の結果も問題ないことが確認できます。
IF関数で日付を条件にしてもうまくいかない場合
DATEVALUE関数を使用していない
先ほど説明した通り、IF関数で"2000/1/1"などの日付形式を使用する場合、DATEVALUE関数の引数とする必要があります。
繰り返しになりますが、解決策としてはDATEVALUE関数を使用しましょう。
DATE関数の指定が誤っている
IF関数の条件に日付を指定する場合、DATEVALUE関数ではなくDATE関数を使用することもできます。
しかし、日付の部分はDATEVALUE関数と同じではうまくいきません。
DATE関数の場合引数は、
年,月,日
という形で指定する必要があります。
2000年1月1日であれば、2000,1,1と指定します。ダブルクオーテーションも不要です。
これでうまくいきました。他のセルにもコピーして適用します。
エクセルで日付を扱う関数
IF関数の条件としてDATE関数・DATEVALUE関数をご紹介しましたが、日付を扱うことのできる関数は他にもたくさんあります。
使用例も記載していますので、こちらの表を参考にしてみてください。
関数名 | 機能 | 数式の型 | 使用例 | 備考 |
DATE関数 | シリアル値を返してくれる | =DATE(年,月,日) | =DATE(1900,1,1) | |
DAY関数 | 値に含まれる「日付」データを返してくれる | =DAY(シリアル値) | =DAY("2020/5/13") | 実用上「シリアル値」の部分は日付表現でもOK(エクセルが変換してくれるため) |
DAYS関数 | 引数で指定した日付の間の日数を返してくれる | =DAYS(終了日,開始日) | =DAYS("2019/3/4","2018/5/5") | |
MONTH関数 | 値に含まれる「月」データを返してくれる | =MONTH(シリアル値) | =MONTH("2020/5/13") | 実用上「シリアル値」の部分は日付表現でもOK(エクセルが変換してくれるため) |
SECOND関数 | 値に含まれる「秒」データを返してくれる | =SECOND(シリアル値) | =SECOND("18:33:21") | 実用上「シリアル値」の部分は時刻表現でもOK(エクセルが変換してくれるため) |
MINUTE関数 | 値に含まれる「分」データを返してくれる | =MINUTE(シリアル値) | =MINUTE("18:33:21") | 実用上「シリアル値」の部分は時刻表現でもOK(エクセルが変換してくれるため) |
HOUR関数 | 値に含まれる「時間」データを返してくれる | =HOUR(シリアル値) | =HOUR("18:33:21") | 実用上「シリアル値」の部分は時刻表現でもOK(エクセルが変換してくれるため) |
NOW関数 | 現在の日付・時刻を返してくれる | =NOW() | =NOW() | 引数は不要 |
TODAY関数 | 現在の日付を返してくれる | =TODAY() | =TODAY() | 引数は不要 |
この記事の内容は下記の動画でもまとめていますので、是非ご参考下さい!