• ベストアンサー

Excelにおける日付

仕事用に他部署からデータをExcelでいただいたのですが、1万件近くのデータが入っており、このデータの日付が全て7桁の数値として入力されているため、活用できず困っています。 Excelに詳しい方のお知恵を拝借したく、質問に参りました。 行いたい処理は、Excelのあるセルに「20050301」という7桁の数字が入力されている場合、これを別の1つのセル内に「2005年3月1日」という日付として認識させたいのです。 そういったことはできるのでしょうか? セルの書式で、表示形式をユーザー定義・####年##月##日とすれば、「2005年03月01日」と表示させることは簡単にできますが、そうではなく、7桁の数字を日付として認識させ、日付関数を使って日数の計算をしたいのです。 A1セルに「20040301」、B1セルに「20050301」と入力されているとしたら、これをそれぞれ「2004年3月1日」、「2005年3月1日」と認識させ、その間の日数が365日という結果を算出するのが目的です。 ダイレクトにできなければ、途中にいくつかの列を経由しても構いません。 よろしくお願いします。

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

  • ベストアンサー
  • ryk1234
  • ベストアンサー率40% (46/113)
回答No.1

=DATEDIF(DATE(LEFT(A1,4),MID(A1,5,2),RIGHT(A1,2)),DATE(LEFT(B1,4),MID(B1,5,2),RIGHT(B1,2)),"D") ダイレクトにやるなら↑

noname#35582
質問者

お礼

ありがとうございます。 ダイレクトに日数まで計算できるとは思っていませんでした! 膨大なデータを前に、どうなるんだろうと思っていたところ、的確なご回答をいただき、今日中に作業を終えることができそうで、感謝に耐えません。 お陰さまで心安く週末を迎えることができそうです。

その他の回答 (4)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.5

VBAなら Sub Dconv() Dim n As Long With ActiveCell n = 0 Do If .Offset(n, 0) = "" Then Exit Do ElseIf IsNumeric(.Offset(n, 0)) Then .Offset(n, 0) = Format(.Offset(n, 0), "####/##/##") End If n = n + 1 Loop End With End Sub 日付データの一番上のセルを選択しておいて、マクロを実行するだけです。

noname#35582
質問者

お礼

ありがとうございます。 ビジュアルベーシックはあまり理解していないので…。 もう少し勉強して、次回以降に活用させていただこうと思います。

回答No.4

こんにちは☆ あたしもあまり詳しくないのですが、自分なりに考えたやり方を^^; まず、A1のセルに「20040301」と入ってるとしたら、その下とか横とかあいているセル(例えばB1)に「=LEFT(A1,4)」と入れます。 これで年が出ます。 次に、他の空いているセル(例えばC1)に「=MID(A1,5,2)」と入れます。 これで月が出ます。 次に、他の空いているセル(例えばD1)に「=RIGHT(A1,2)」と入れます。 これで日が出ます。 で、さらに空いているセルに「=DATE(B1,C1,D1)」とすれば日付の関数になるのですが…。 めんどくさいですね^^; 参考にならなくてすみません; 頑張ってください!

noname#35582
質問者

お礼

ありがとうございます。 > 自分なりに考えたやり方 RIN-RIN-RINさん、すごいですね!! 私は今まで簡単な関数しか使っていなかったので、一度マニュアル本でも読んで勉強してみなければ、と思いました。

noname#181260
noname#181260
回答No.3

こんにちは。 日付が列方向に入力されているなら。 列選択>データ>区切り位置>ウィザードの3/3で 列のデータ形式を「日付」にすると、データが日付になりますよ。

noname#35582
質問者

お礼

ありがとうございます。 初めて知ったやり方です! 今回は、#1さんのダイレクトな日数計算を使わせていただくことにしましたが、次回何かの折に使えるかもしれません。 覚えておこうと思います。 でも、なぜか「20050104」を区切ると「2005年5月4日」になってしまうのですが…。

  • platypus
  • ベストアンサー率27% (24/88)
回答No.2

A1のセルに8桁(ですよね)の数字が入っているとしたら、 B1のセルに =DATE(MID(A1,1,4),MID(A1,5,2),MID(A1,7,2)) と入力してあげると、日付に直せます。 8桁の数字をMID関数で1桁目から4桁、5桁目から2桁、7桁目から2桁で取り出して、その後DATE関数を利用します。

noname#35582
質問者

お礼

ありがとうございます。 そうですね。8桁でした(恥) 自分がいかに焦っていたか…。 Excelはずっと独学で(適当に)やってきたので、MID関数でデータの一部の文字を取り出す-ということを初めて知りました。