EXCELで”1799/8/1″の文字列を数値にしようとして、罠にハマった。
1.現象
下図のように数値に変換しようとするとエラーになる。
(1)Value関数
(2)Datevalue関数
2.他の文字列の場合(例として2000/8/1)
(1)Value関数 →数値化できる。
(2)Datevalue関数 →エラー(単なる文字列の為)
3.原因
下図のWEBページに記載があるように、”文字列の年数が
1990/1/1から9999/12/31までの範囲でない”為である。
・DATEVALUE 関数の #VALUE! エラーを修正する方法
4.対策
VBAで関数を自作し、年・月・日を個々に整数に変換する事にした。
なお、西暦は4桁を前提とした(フランス革命からナポレオン戦争までを想定)。
<個人的な感想>
原因が分かるまでに、しばらく悩んでしまった・・・。何故に1990年からしか対応しないのか
理解に苦しむ。どうせなら西暦元年から対応して欲しかった。