Excel。日付を直接入力した数式はシリアル値で考える必要があります。
<IF+DATEVALUE関数>
判定に使う日付をセルに入力している場合には、いいのですが、直接日付を引数に入力した場合、きちんと算出してくれないことがあります。
次の表を用意しました。
B列に作業終了日という日付が入力されています。
C列には、2024/10/31以前ならば、○。
それ以降ならば、×と算出したいと考えています。
そこで、IF関数をつかって、C2に数式をつくります。
=IF(B2<=2024/10/31,"○","×")
オートフィルで数式をコピーします。
すべてC列は、2024/10/31以前も以降も関係なく、×になっています。
C2の数式を確認するために、数式タブの「数式の検証」を行ってみると原因がわかります。
2024/10/31の「2024/10」を数式と勘違いして、2024÷10として、さらに÷31をしています。
つまり、B列の日付がシリアル値という数値で、C列は「/」を割り算と勘違いして、除算した結果の数値と比べているために、結果がおかしくなっています。
日付として扱ってくれていないわけです。
だったら、”2024/10/31”と「”(ダブルコーテーション)」で日付を囲ってみたらどうなるのでしょうか。
今度は、すべて「○」となってしまいました。
これは、”2024/10/31”が日付ではなくて、文字列として判断されています。
そのため、シリアル値という数値と文字を比べていますので、当然、シリアル値である日付のほうが小さくなります。
よって、結果は「○」となってしまったというわけです。
紹介した両方とも、「日付」として扱ってくれていません。
Excelには日付はシリアル値という数値です。
日付型ではありません。
そこで、日付型というか、日付とExcelにわからせる必要があります。
そこで、DATEVALUE関数をつかって、数式を修正します。
=IF(B2<=DATEVALUE("2024/10/31"),"○","×")
DATEVALUE関数は、日付文字列にしてくれる関数です。文字列を日付扱いにしてくれます。
これで、きちんと算出してくれました。
このように、日付を直接入力して使う場合には、日付文字列にする必要がある場合、DATEVALUE関数を組み合わせることで対応することができます。