『教えてエクセルマクロ。2008/1/11 18:20を、年/月/日と時:分の2つに分割したい』


~報酬~
最良回答には各100Pほど予定しております。

~内容~
Range("A1")に、
2008/1/11 18:20
みたいに年月日と時刻が書かれているとします。
こいつを、
Range("A2")=2008/1/11
Range("A3")=18:20
のように分けたいんですが、そうするにはどう書けばいいんでしょう?

~条件~
・分けたデータが日時のデータとして認識されるようにしたい
・できるだけ短く簡素化されたコードで。(可能なら一行で)

チカラ貸して下さい!ヨロシクオネガイシマス!

回答の条件
  • 1人5回まで
  • 登録:2008/01/15 04:02:26
  • 終了:2008/01/15 17:45:28

回答(2件)

id:cx20 No.1

cx20回答回数603ベストアンサー獲得回数1072008/01/15 04:38:10

ポイント100pt

VBA からでしたら Format() 関数を使うことで、日付型→文字列への変換が可能です。

Option Explicit

Sub DateToStringTest()
    Dim strDate
    strDate = Range("A1")                      ' 2008/1/11 18:20
    Range("A2") = Format(strDate, "yyyy/m/d")  ' 2008/1/11 18:20 -> 2008/1/11
    Range("A3") = Format(strDate, "hh:mm")     ' 2008/1/11 18:20 -> 18:20
End Sub

<参考情報>

■ EXCEL VBA セルの操作 書式

http://www.geocities.jp/cbc_vbnet/function/date.html

id:gsjapan

なるほどFormatはこういった使い方もあるんですね。

早速活用してみます。

参考になるサイトも教えて頂き感謝します。

アリガトウございましたぁ!

2008/01/15 17:36:49
id:SALINGER No.2

SALINGER回答回数3454ベストアンサー獲得回数9692008/01/15 08:31:19

ポイント100pt

表示を変えるだけならば

A2セルの数式を =A1 、A3セルの数式を =A1 といれて

A2のセルの書式設定を yyyy/m/d

A3のセルの書式設定を h:mm

にすればできます。


完全に値を切り分けるということになればマクロで

DateValue()とTimeValueを使って

    Range("A2").Value = DateValue(Range("A1").Value)
    Range("A3").Value = TimeValue(Range("A1").Value)
    Range("A3").NumberFormatLocal = "h:mm"
id:gsjapan

なるほど。。

DateValueとTimeValueってのは初めて知りました。

カンペキな御回答2つ頂けましたので、これにて質問終了とさせて頂きます。

ありがとうございました。次回もヨロシクです♪

2008/01/15 17:44:58
  • id:taknt
    分けたデータを日時として認識させたいならば、そのままセットして書式を変更すればいいだけだ。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません