工作所発
うぃんど〜ず注意報 第3報
PDF

年2桁の入力

前回はMicrosoft社のデータベースソフトAccess2.0についてお報せしました。当社はAccess2.0で動かすソフトをずいぶん作って納入してしまったので、対策におおわらわです。

 さて、今回は同じMicrosoft社の表計算ソフト「Excel」です。日付をある基準日からの通算日で記憶する方式はAccessと同じです。試しにあるセルに“1999/2/28”と入力します。このセルの書式設定を見ると「表示形式」の分類が「日付」になっています。「標準」に切り替えると36219≠ニなります。これは1900年1月1日からの通算日数です。こんどは「表示形式」を「日付」で種類を和暦(H9.3.4)にすると、H11.2.28≠ニなります。記録しているは通算日数で、それをどう表現するか(和暦か西暦か)が書式設定なのです。通算日数での記憶は“00”を1900年と読み違えるいわゆる2000年問題はおきないことがわかります(なお、基準日はExcelとAccessとでは異なります)。
 この例のように年を4桁で入力する分には問題ありません。もちろん“H12/2/28”とか“H13/2/28”とか和暦も大丈夫です。
 
 問題は年の部分を2桁で入力したときです。“99/2/28”は1999/2/28=A“00/2/28”は2000/2/28≠ナす。ところが、“1/2/28”はH1/2/28≠ニ和暦になってしまいます。“2/2/28”はH2/2/28≠ニ順々に平成の年がすすみ、“21/2/28”はS21/2/28≠ニ昭和にもどります。さらにすすめて“65/2/28”は1965/2/28≠ニ西暦になります。
 
 整理すると、“1”〜“19”は平成、“20”〜“64”は昭和、“65”〜“99”と“0”は西暦と解釈してくれるのです。まあ、なんとも有難いような、ご丁寧な、というよりお節介な機能ではありませんか。ちなみに書式設定をどう変えても同じです。書式設定は表現の形式ですから、入力の解釈にはぜんぜん関係しません。いろいろ他の設定やらプロパティやらを探したのですが、年2桁の入力の解釈を設定するところは見つかりませんでした。ユーザーが設定できないのです。和暦を使うか西暦を使うかは、使う人の業務やらあるいは思想信条でそれぞれでしょう。なのに一つの解釈を押付けるExcelの製作者は傲慢だと思うには私どもだけでしょうか。前回の注意報を読んでExcelを試した方もあきれていました。
 
 Excelは表計算ソフトですから、縦横の四則演算に加え、合計や平均を計算する関数もあります。その関数の中のDate≠ニいう関数があります。年月日をそれぞれ数値で与えると日付を返してくれます。この関数に年を2桁で与えると、すべて1900年代になってしまします。“00”は1900年、“01”は1901年、平成にもなりません。ちょうどAccess2.0と同じような現象です。もちろん、4桁の西暦年や和暦の年なら問題ありません。なお、年を“101”とすると2001年になりました。ならばと、セルへの入力で“101/02/28”とやったら日付と認識してくれませんでした。
 
 まだあります。一連の操作をプログラムする機能があるのが表計算ソフトの良いところです。Excelではマクロです。マクロにも関数があり、DateSerial≠ニいう関数はセルで使うDate≠ニ同じく年月日をそれぞれ数値で与えると日付を返してくれます。なぜ同じ機能の関数で名前が違うのかはここでは触れませんが、このDateSerial関数では“00”〜“29”は2000年代、“30”〜“99”は1900年代を返します。こんどはAccess97と同じく2030年に問題を先送りしています。
 
 同じソフトで年2桁の取扱がこうまで違うというのはどういうことでしょう。ただひたすらユーザーを混乱させているだけです。これはもうバグ(不具合)を通り越して不良品なのではないでしょうか。次期バージョンはこの問題をどう解決しているでしょうか。楽しみですが、2000年はもうすぐそこです。

 
 TOPへ