Excel。数式に直接日付をつかって処理する時にシリアル値で考える必要があります。
<IF+DATEVALUE関数>
条件とする日付を入力したセルを用意するのではなく、数式に直接日付を設定する場合には、ちょっとしたアイディアが必要になります。
次の表で説明します。
C列には、B列のデータが2022/11/30までに提出されていれば、「○」を表示するようにしたいわけです。
別のセルに2022/11/30という条件を入力していないので、直接数式の中に、日付を入力した数式をつくることになるわけです。
C2の数式は、
=IF(B2<DATEVALUE("2022/12/1"),"○","×")
と設定してあります。
なぜ、日付の前に、DATEVALUE関数をつかっているのか説明をしていきます。
C2に、次の数式を用意して、オートフィルで数式をコピーしてみます。
=IF(B2<"2022/12/1","○","×")
C5の判定がおかしいことがわかります。
条件の日付に「”(ダブルコーテーション)」をつかって、「"2022/12/1"」としたのが、いけないのかと考え「2022/12/1」とダブルコーテーションを消してみます。
=IF(B2<2022/12/1,"○","×")
結果は、ますます、おかしくなってしまいます。
なぜ、このようなことになってしまうのか。
その原因は、「日付」はシリアル値だということ。
つまり、「数値」なんだということです。
最初の「”(ダブルコーテーション)」をつかってしまうと、「文字」になってしまうので、「2022/12/1」という文字よりも小さいという条件になってしまったわけです。
二つ目の「”(ダブルコーテーション)」が無い数式は、「数値は数値」なのですが「2022/12/1」という除算した結果より小さいかという条件になってしまったわけです。
数式タブの「数式の検証」をつかってみると、よくわかります。
このようにシリアル値の問題がある場合には、日付を数値に変えて判断させることが必要になります。