【Excel】文字列を数値にする罠

 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年からしか対応しないのか

理解に苦しむ。どうせなら西暦元年から対応して欲しかった。

 

<リンク>

ブログのトップページは、こちら

バタイユゲーム情報班のホームページは、こちら