• ベストアンサー

emmdd表記をyymmdd表記の文字列にするには

ご覧いただきありがとうございます。 エクセルのデータに 20721 (令和2年7月21日の意) と数値のみ記入してあり、こちらを数式かマクロを用いて 200721 (yymmdd) に変換したいです。 どの様に表記すればできるのでしょうか?

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

すでに回答は出ていますが (1)表示形式の設定ができるのは(関数では無理)で、VBAで行う (2)VBAを用いて、セルの値を、一旦、日付シリアル値に変換し (3)そのセルの表示形式を適当なものに設定する。 (4)もし、セルの値を、文字列にしたい場合は、VBAのFormat関数で望みのものにする。 が常道ではないかと思います。この2段ステップを踏まないと、折角のエクセル の日付の表示システムの、有難味が使えないし、自己流では、色んなケースを考えたとき、誤るかもしれない。 ーーー データが、セルA2での例。 Sub test02() i = 2 s = Cells(i, "A") If Len(s) = 6 Then s = "R" & s If Len(s) = 5 Then s = "R" & "0" & s MsgBox s s = Mid(s, 1, 3) & "/" & Mid(s, 4, 2) & "/" & Mid(s, 6, 2) Cells(i, "B") = DateValue(s) Cells(i, "B").NumberFormatLocal = "yymmdd" End Sub == 他に Sub test03() i = 2 s = Cells(i, "A") If Len(s) = 6 Then s = "R" & s If Len(s) = 5 Then s = "R" & "0" & s MsgBox s s = Mid(s, 1, 3) & " " & Mid(s, 4, 2) & " " & Mid(s, 6, 2) Cells(i, "B") = DateValue(s) Cells(i, "B").NumberFormatLocal = "yymmdd" End Sub Sub test04() i = 2 s = Cells(i, "A") If Len(s) = 6 Then s = "令和" & s If Len(s) = 5 Then s = "令和" & s MsgBox s s = Mid(s, 1, 3) & "/" & Mid(s, 4, 2) & "/" & Mid(s, 6, 2) Cells(i, "B") = DateValue(s) Cells(i, "B").NumberFormatLocal = "yymmdd" End Sub でもOKのようだ。

konrar51
質問者

お礼

imogasi さま ご回答および留意すべき点をご教示頂きありがとうございます。 当方 yy/mm/dd かyymmdd の書式を多用しておりますので、 test03 と test04 を教えて頂き本当に助かりました。 令和10年以降にも対応できる点、日付シリアル値を生成できる点 からベストアンサーとさせて頂きます。 ありがとうございました。

その他の回答 (2)

  • Mathmi
  • ベストアンサー率46% (54/115)
回答No.2

まず、数式ではセルの書式を変更できません。 入力されているデータが5桁だと決まっているなら、次の数式で日付型に変換できます。 =DATEVALUE(CONCATENATE("令和",MID(A1,1,1),"年",MID(A1,2,2),"月",MID(A1,4,2),"日")) セルの書式は手動で変更して下さい。 令和と昭和が混在していたりするならば、ifで条件分けする必要があるでしょう。

konrar51
質問者

お礼

Mathmiさま 無事組み込みできました!! ありがとうございます♪

  • maiko04
  • ベストアンサー率17% (345/1956)
回答No.1

双方数字ならA1+180000

konrar51
質問者

お礼

maiko04 さま そんな方法があるとは...! 汎用性高いですね、ありがとうございます!

関連するQ&A