- ベストアンサー
emmdd表記をyymmdd表記の文字列にするには
ご覧いただきありがとうございます。 エクセルのデータに 20721 (令和2年7月21日の意) と数値のみ記入してあり、こちらを数式かマクロを用いて 200721 (yymmdd) に変換したいです。 どの様に表記すればできるのでしょうか?
- みんなの回答 (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のようだ。
その他の回答 (2)
- Mathmi
- ベストアンサー率46% (54/115)
まず、数式ではセルの書式を変更できません。 入力されているデータが5桁だと決まっているなら、次の数式で日付型に変換できます。 =DATEVALUE(CONCATENATE("令和",MID(A1,1,1),"年",MID(A1,2,2),"月",MID(A1,4,2),"日")) セルの書式は手動で変更して下さい。 令和と昭和が混在していたりするならば、ifで条件分けする必要があるでしょう。
お礼
Mathmiさま 無事組み込みできました!! ありがとうございます♪
- maiko04
- ベストアンサー率17% (345/1956)
双方数字ならA1+180000
お礼
maiko04 さま そんな方法があるとは...! 汎用性高いですね、ありがとうございます!
お礼
imogasi さま ご回答および留意すべき点をご教示頂きありがとうございます。 当方 yy/mm/dd かyymmdd の書式を多用しておりますので、 test03 と test04 を教えて頂き本当に助かりました。 令和10年以降にも対応できる点、日付シリアル値を生成できる点 からベストアンサーとさせて頂きます。 ありがとうございました。