10/24/2022

Excel。数式に直接日付をつかって処理する時にシリアル値で考える必要があります。【serial number】

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」という除算した結果より小さいかという条件になってしまったわけです。


数式タブの「数式の検証」をつかってみると、よくわかります。


 このようにシリアル値の問題がある場合には、日付を数値に変えて判断させることが必要になります。

そこで、DATEVALUE関数をつかうというわけです。


C2の数式をDATEVALUE関数のネストに変更します。

=IF(B2<DATEVALUE("2022/12/1"),"○","×")


オートフィルで数式をコピーすれば、完成するというわけです。


数式タブの「数式の検証」でこの数式を確認してみると、動きが理解できます。


このように、数式内に直接日付を使用した時に、結果がおかしい場合には、シリアル値のことを考えてみると、対応できるかもしれませんね。