• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA(エクセル)で『17.10.11』を『平成17年10月11日』の変換出力)

VBA(エクセル)で日付を変換出力する方法

このQ&Aのポイント
  • VBA(エクセル)を使用して、指定したセルの日付を別のシートに変換して出力する方法を教えてください。
  • 具体的には、セルに入力された『17.10.11』という日付を『平成17年10月11日』に変換して、別のシートに出力したいです。
  • 現在、コピープログラムでは指定セルの内容をそのまま別のシートにコピーしていますが、日付の形式を変換して出力する方法を教えていただけると助かります。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.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

asdasdd
質問者

お礼

すいません。わたしの勘違いでしたm(_ _)m 本当にいろいろご指導ありがとうございました。 本当に勉強になりました。 BLUEPIXYさんには感謝ばかりです。

asdasdd
質問者

補足

なにか私のやり方がまずいのか、コピーさせてもらい貼り付けてもオブジェクトが必要ですというエラーがでてしまいます。何がまずいのでしょうか?? 何度もすいません。

その他の回答 (3)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>平成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)

asdasdd
質問者

補足

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)
回答No.2

Dim a a = Split(s.Cells(r, 1).Value, ".") Sheets("Sheet2").Range("A1").value=StrConv("平成" & a(0) & "年" & a(1) & "月" & a(2) & "日", vbWide) でいいと思います。 個人的には、文字列にしてしまう方が応用が利かないと思いますが・

asdasdd
質問者

補足

本当にありがとうございます。かなり悩んだ結果、BLUEPIXYさんのおかげで悩みが解決しました。 もし、わかればでよろしいのですが、これを発展させて『17.12.16 ~ 17.12.18』と打ったら同じように シート2に 『平成17年12月16日から平成17年12月18日までの間』 という『~』は『から』という文字に変更して、↑のようなものを出力することは可能でしょうか??? もし今ほど教えてもらったプログラムをベースにしてできるなら教えていただけるとうれしい限りです。 m(_ _)m

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

エクセルで日付として扱えるものとして出力するのでしょうか それとも、単なる文字列として出力するのでしょうか

asdasdd
質問者

補足

お早いご回答本当にありがとうございます。 シート1にはピリオドを使います。 『17.12.16』 これをマクロ実行すると シート2に 『平成17年12月16日』という風にとにかく出力できればいいのですが、 はば広く応用が聞くという意味では、文字列として出力したいなと感じています。