- ベストアンサー
VBA(エクセル)で日付を変換出力する方法
- VBA(エクセル)を使用して、指定したセルの日付を別のシートに変換して出力する方法を教えてください。
- 具体的には、セルに入力された『17.10.11』という日付を『平成17年10月11日』に変換して、別のシートに出力したいです。
- 現在、コピープログラムでは指定セルの内容をそのまま別のシートにコピーしていますが、日付の形式を変換して出力する方法を教えていただけると助かります。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>『17.12.12.17:02』だったり『17.12.12.12:00~17.12.12.14:00』だったりする 'だいだい、こんな感じかと Public Sub test() Dim a Dim str As String str = s.Cells(r, 1).Value If InStr(str, "~") > 0 Then a = Split(str, "~") str = toDateStr(a(0)) & "から" & toDateStr(a(1)) & "の間" Else str = toDateStr(str) End If Sheets("Sheet2").Range("A1") .Value = StrConv(str, vbWide) End Sub Private Function toDateStr(s) As String Dim d, t d = Split(s, ".") t = Split(d(3), ":") t(0) = CInt(t(0)) toDateStr = "平成" & d(0) & "年" & d(1) & "月" & d(2) & "日" & IIf(t(0) >= 12, "午後" & (t(0) - 12), "午前" & t(0)) & "時" & t(1) & "分" End Function
その他の回答 (3)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>平成17年12月16日から平成17年12月18日までの間 Dim a Dim str As String str = Replace(s.Cells(r, 1).Value, " ", "") '全角スペース削除 str = Replace(str, " ", "") '半角スペース削除 str = Replace(str, "~", ".") '~を置換 a = Split(str, ".") str = "平成" & a(0) & "年" & a(1) & "月" & a(2) & "日から平成" & a(3) & "年" & a(4) & "月" & a(5) & "日までの間" Sheets("Sheet2").Range("A1").Value = StrConv(str, vbWide)
補足
BLUEPIXYさんたびたび申し訳ありません。またもう一つどうしても必要な機能がでてきてしまいました。いろいろ調べてもわからず頼みの綱がBLUEPIXYさんだけだったので・・もしわかればお願いします。 日付の入力欄(すいません。時刻が必要になりましたm(_ _)m)は 『17.12.12.17:02』だったり『17.12.12.12:00~17.12.12.14:00』だったり するのですが、前回質問したときと同じようにこれを判別して『平成17年12月12日午後5時02分』というような表記方式にするプログラムはできないでしょうか? もし後記のような『~』が入った場合は『から』を付けて同じような表記に変換して出力したいのです。 ちなみに時刻は何時のところだけ午前午後判別できればいいのですが・・・ もう頼みの綱がBLUEPIXYさんしかいません。 もしわかればお願いいたします。すいません。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
Dim a a = Split(s.Cells(r, 1).Value, ".") Sheets("Sheet2").Range("A1").value=StrConv("平成" & a(0) & "年" & a(1) & "月" & a(2) & "日", vbWide) でいいと思います。 個人的には、文字列にしてしまう方が応用が利かないと思いますが・
補足
本当にありがとうございます。かなり悩んだ結果、BLUEPIXYさんのおかげで悩みが解決しました。 もし、わかればでよろしいのですが、これを発展させて『17.12.16 ~ 17.12.18』と打ったら同じように シート2に 『平成17年12月16日から平成17年12月18日までの間』 という『~』は『から』という文字に変更して、↑のようなものを出力することは可能でしょうか??? もし今ほど教えてもらったプログラムをベースにしてできるなら教えていただけるとうれしい限りです。 m(_ _)m
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
エクセルで日付として扱えるものとして出力するのでしょうか それとも、単なる文字列として出力するのでしょうか
補足
お早いご回答本当にありがとうございます。 シート1にはピリオドを使います。 『17.12.16』 これをマクロ実行すると シート2に 『平成17年12月16日』という風にとにかく出力できればいいのですが、 はば広く応用が聞くという意味では、文字列として出力したいなと感じています。
お礼
すいません。わたしの勘違いでしたm(_ _)m 本当にいろいろご指導ありがとうございました。 本当に勉強になりました。 BLUEPIXYさんには感謝ばかりです。
補足
なにか私のやり方がまずいのか、コピーさせてもらい貼り付けてもオブジェクトが必要ですというエラーがでてしまいます。何がまずいのでしょうか?? 何度もすいません。