• ベストアンサー

エクセルで日付を別のシートに引用したい

エクセルもマクロも初心者です。 2008年8月29日  という日付を別シートに引用したいのですがうまくいきません。 情報として欲しいのは“2008年8月”の部分です。 調べてみたら文字の引用ができる関数があったので、実際に使ってみました。 LEFT(Sheet1!A1,9) MID(Sheet1!A1,9) どちらをやっても39689という数字が出てきます。 なぜこのようになるのでしょうか? そして、どうすればうまく引用できるのでしょうか?

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

日付はデータは1900/1/1を1とするシリアル値で扱われます。2008/8/29は、1900/1/1から数えて39689日目なので、シリアル値は39689になっています。 今回のように“2008年8月”と欲しいのでしたら、=Sheet1!A1 として、セルの書式設定で見た目上変えてやります。 または、シリアル値を文字列に変換しての表示になります。文字列に変換する際に、日は不要なので取ってしまいます。 =TEXT(Sheet1!A1,"YYYY年M月")

marippe726
質問者

お礼

ご回答ありがとうございます。 関数で引用したセルはなぜか書式設定で変えられないのですが、 あいてるセルに=TEXT(Sheet1!A1,"YYYY年M月") で作り変えて引用したらうまくいきました! これをうまくマクロでできるようにしようと思います。

その他の回答 (4)

  • aperun8
  • ベストアンサー率38% (10/26)
回答No.5

ANo,2 です。 おそらく、すでに解決済みだと思いますが・・ 39689 と表示されているセルを他の方がおっしゃるように =LEFT(A1, 9)とかではなく、=Sheet1!A1 にしてください。

回答No.4

その引用したシートの「表示形式」は何になってますかね? 表示形式を「日付」にすればOKだと思いますが。

marippe726
質問者

お礼

ご回答ありがとうございます。 それがなぜか表示形式をどのようにしても変わらなくて困っていました。 とりあえず違う方法で免れたものの・・・なぜこのようになってしまったのかよくわかりません。

回答No.3

エクセルによる日付は「2008年8月29日」や「2008/8/29」「平成20年8月29日」などさまざまな表示ができますが、日付を数値化したものはどれも同じでありその数値がシリアル値というものです。これによって日付の計算ができるのです。 ですので表示が2008年8月29日となっていても計算対象はシリアル値にということになります。 この場合、単純に =Sheet1!A1 としセルの書式設定で表示形式をユーザー定義にし yyyy"年"m"月" とすることで解決できると思います。

marippe726
質問者

お礼

ご回答ありがとうございます。 書式設定でユーザー定義にしてもシリアル値のままでした。 No1の方のところでも書きましたが、他のセルに書き換えて使うことでとりあえずしのぎましたが、もっと他の方法もありそうだなって思います。

  • aperun8
  • ベストアンサー率38% (10/26)
回答No.2

こんにちは、私も初心者ですが・・ 単純に39689と表記されているセルを右クリックして「セルの書式設定」から表示形式タブで「日付」を選んで"2008年8月"の形にすればいいのではありませんか? ちなみに39689となるのはシリアル値と言うそうです。 以下ヘルプから (日付はシリアル値として連続番号で格納されて計算が行われます。既定では、1900 年 1 月 1 日がシリアル値 1 になります。2008 年 1 月 1 日は 1900 年 1 月 1 日から 39,448 日後に当たるので、シリアル値は 39,448 になります。)

marippe726
質問者

お礼

ご回答ありがとうございます。 書式設定で日付にしようとしてもなかなかしぶとく・・・結局そのままシリアル値というもののままでした。 なぜこうなってしまったのかは未だ理由がわかりません。 それにしても・・・シリアル値ですか・・・勉強になりました。

関連するQ&A