• ベストアンサー

ExcelのYear()がうまく作動しないのはなぜか?

Excel (Office 2004forMac)のマクロで、Application.InputBoxを使ってBook1のセルB1に期首期日(例えば2009/1/1)(これを変数StartingDateと定義)を次のように入力しました。これは成功しました。 StaringDate=Application.InputBox("期首:", "期首期日") Cells(2,1).Value=StartingDate つぎに本年の値(2009)をセルB3に入れようとして次のようにしました。  Cells(B3).Value=Year(StartingDate) すると、B3には「1905....」のようなデータが入ってしまいます。あるいは2段構えで  ThisYear=Year(StartingDate) Cells(B3).Value=ThisYear としても結果は同じです。 マクロではなく、直接にB3に「=Year(B2)」と書き込むと、正しく2009が表示されるときと、1905.xxxが表示されるときがあります。  正しい表示を得るのに、何処が誤っているのでしょうか? いくら考えても判りませんで、困っております。おわかりの方、どうぞ教えて下さい!

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

  • ベストアンサー
  • AKARI0418
  • ベストアンサー率67% (112/166)
回答No.2

日付のエクセルでの認識は1900/01/01から何日後であるかで制御しています。 日付型は実際は数字なんです。 そのため、日付形式に2009と入力すると1900/01/01から2009日後の1905/07/01となってしまいます。

693hiro
質問者

お礼

Year()を入れたセルの表示形式を日付のデータ型にすべきだと勘違いしておりました。誤りが良く理解できました。貴重なヒント、本当にありがとうございました。

その他の回答 (1)

  • hotosys
  • ベストアンサー率67% (97/143)
回答No.1

セルの表示形式が違っていませんか? 値が2009のセルの表示形式を日付形式にすると(形式にもよりますが)1905/7/1とかになってしまうようです。

693hiro
質問者

お礼

戴いたヒントを元に再考し、Year(StartingDate)が日付のデータ型ではないことに気づき、セルB3の表示形式を標準または数値に直したところ、正しく2009が得られました。 本当に助かりました。ありがとうございました。

関連するQ&A