• ベストアンサー

date関数の謎

エクセルで、date関数を使用して起こった現象です。 A1セルに2002と入力 A2セルとA3セルは空白にして、 =date(a1,a2,a3)とします。 関数のあるセルにはユーザー定義でaaaとしておきます。 すると、「金」と表示されるのですが、これはなぜなのでしょうか。 お教え下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • omusupa
  • ベストアンサー率61% (115/186)
回答No.2

どうして、2001年11月30日になるか ってことでしょうか? ユーザ定義をaaaにされていると言うことは、曜日の表示形式だということは 分ってやっていらっしゃるのですよね。 A2とA3を空白にしているのにもかかわらず、金って出るのが不思議ってことですね。(違ってたらごめんなさい) つまり、空白は0(ゼロ)と判断されますので、 2002年0月0日と言うことになります。もちろんそんな日付は存在しません。 しかし、A1に2002 B1に12 C1に1と入力して date(a1,b1+1,c1)とすると、(+1と言うのは翌月をあらわしたいためです。) 普通に考えると2002年13月1日となりますが、表示されるのは 2003年1月1日(表示形式は日付)になると思います。 すなわち 0月と言うのは1月の前だから12月 0日と言うのは1日の前だから 30日または31日になります。ということは12月も11月になり 2001年11月30日なり2001年11月30日は金曜日なので、金 と表示されます。シリアル値の説明は#1の方の解答で分ると思います。

brucelee
質問者

お礼

非常にわかりやすい解説で,納得できました.ありがとうございました.

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

#2の方のご解答を裏らづける実験?をして見ましょう。 理解が進むでしょう。 (A列)(B列) (C列)   (D列) 2002 0 0 H13.11.30 2002 -1 -1 H13.10.30 2002 -2 -1 H13.9.29 2002 -3 -3 H13.8.28 1 0 0 M33.11.30 1 -1 -1 M33.10.30 以上のようにマイナス数字をいれても計算します。 日の列を-3とかいれても、可能です。 月では0は12の前、-1はそのまえの11のことです。 日では、0は実際の月末日の、-1はその前の日を示します。なんか実務で応用が考えられるかも知れませんね。 さすがに年まで-1にするとエラーになるようですが。

  • mneko
  • ベストアンサー率33% (46/139)
回答No.1

これは関数を入れたところにシリアル値として、「37225」と入力され 「aaa」は曜日の月~日が表示されます、ちなみに「aaaa」とすると 金曜日と「曜日」まで表示されます。 これは、1900年を基準として、日数を連続値で計算されている為です。 貴方の場合2002年0月0日を連続値(シリアル値)に置き換わっている為です。

関連するQ&A