9/13/2024

Excel。日付を直接入力した数式はシリアル値で考える必要があります。【DATE】

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関数を組み合わせることで対応することができます。