大体でIT
大体でIT
2020/10/27
Excel VBAで日付を文字列に変換する方法をご紹介します。簡単な方法は、CStrを使う方法です。和暦に変換したり、日付に曜日もつけて文字列に変換したい、といった場合は、Formatが使えます。
この記事では、日付型の日付を文字列に変換する方法についてご紹介します。
日付を文字列に変換するには、CStrとFormatがあります。
ですが、文字列に変換する場合は、おそらく和暦にしたいとか、曜日もつけたい、といった場合があるかと思います。
その場合は、Formatを使って、日付を文字列に変換しましょう。
日付をCStrを使って文字列に変換する
日付をFormatを使って文字列に変換する
初めに、ポイントとなるVBAコードを記載しておきます。
VBAコードだけを見たいという場合は、こちらをご覧ください。
Dim A
'文字列に変換
A = CStr(#1/1/2020#)
'yyyy/mm/dd形式の文字列に変換
A = Format(#1/1/2020#, "yyyy/mm/dd")
'yyyy/m/d形式の文字列に変換
A = Format(#1/1/2020#, "yyyy/m/d")
'yyyymmdd形式の文字列に変換
A = Format(#1/1/2020#, "yyyymmdd")
'数値8桁に変換
A = Val(Format(#1/1/2020#, "yyyymmdd"))
'和暦の文字列に変換
A = Format(#1/1/2020#, "ggge/mm/dd")
'曜日をつけて文字列に変換
A = Format(#1/1/2020#, "yyyy/mm/dd(aaaa)")
日付を文字列に変換するには、VBA関数のCStrを使います。
では、文字列を日付に変換するCStrについて説明してきます。
これで、日付型の文字列を文字列に変換することができます。
日付型の日付『#1/1/2020#』を文字列に変換してみます。
Sub TEST1()
Dim A
A = #1/1/2020# '日付型:2020/1/1
MsgBox CStr (A) '文字列に変換
End Sub
日付を文字列に変換
結果は、『"2020/01/01"』となりました。
CStrを使って日付を文字列に変換すると、yyyy/mm/dd形式の文字列に変換されます。
なので、文字列に変換する際に、yyyy/mm/dd形式でいいという場合は、CStrで問題ありません。
ただ、他の表示形式にも変換したいという場合もあるかと思います。そんな場合は、Formatを使えばできます。
VBAでFormatを使って日付を文字列に変換する
日付型の日付をFormatを使って文字列に変換する方法です。
Formatを使えば、いろんな表示形式の文字列に変換することができます。
では、よく使われそうな表示形式で、いくつか例を挙げていきます。
日付型の日付をFormatを使って、yyyy/mm/dd形式の文字列に変換してみます。
日付『#1/1/2020#』をyyyy/mm/dd形式の文字列に変換するVBAコードです。
Sub TEST2()
Dim A
A = #1/1/2020# '日付型:2020/1/1
'yyyy/mm/dd形式の文字列に変換
MsgBox Format (A, "yyyy/mm/dd" )
End Sub
日付をyyyy/mm/dd形式の文字列に変換
結果は、『"2020/01/01"』となりました。
つづいて、先ほどと似たような表示形式で、yyyy/m/d形式の文字列に変換してみます。
これは、日付『"2020/01/01"』ではなく、『"2020/1/1"』に変換したい場合に使えます。
日付『#1/1/2020#』をyyyy/m/d形式の文字列に変換するVBAコードです。
Sub TEST3()
Dim A
A = #1/1/2020# '日付型:2020/1/1
'yyyy/m/d形式の文字列に変換
MsgBox Format (A, "yyyy/m/d" )
End Sub
日付をyyyy/m/d形式の文字列に変換
Formatを使えば、自由自在に日付を文字列に変換することができます。
日付型の日付『#1/1/2020#』をyyyymmdd形式の文字列に変換してみます。
Sub TEST4()
Dim A
A = #1/1/2020# '日付型:2020/1/1
'yyyymmdd形式の文字列に変換
MsgBox Format (A, "yyyymmdd" )
End Sub
日付をyyyymmdd形式の文字列に変換
さらに、文字列から数値に変換する『Val』を使えば、数値8桁に変換することもできます。
日付型の日付『#1/1/2020#』を数値8桁に変換するVBAコードです。
Sub TEST5()
Dim A, B
A = #1/1/2020# '日付型:2020/1/1
'yyyymmdd形式の文字列に変換
B = Format (A, "yyyymmdd" )
'数値に変換
MsgBox Val (B)
End Sub
日付を数値8桁に変換
日付型の日付をFormatを使って和暦に変換することもできます。
和暦に変換するには、Formatの表示形式に『"ggge年mm月dd日"』と入力すればできます。
日付型の日付『#1/1/2020#』を和暦に変換するVBAコードです。
Sub TEST6()
Dim A
A = #1/1/2020# '日付型:2020/1/1
'和暦の文字列に変換
MsgBox Format (A, "ggge年mm月dd日" )
End Sub
日付を和暦の文字列に変換
結果は、『"令和2年01月01日"』となりました。
日付型の日付をFormatを使えば、日付に曜日を付けて文字列に変換することができます。
Formatの引数に、『"yyyy/mm/dd(aaaa)"』と入力すればできます。
日付型の日付『#1/1/2020#』に曜日を付けて文字列に変換するVBAコードです。
Sub TEST7()
Dim A
A = #1/1/2020# '日付型:2020/1/1
'曜日をつけた文字列に変換
MsgBox Format (A, "yyyy/mm/dd(aaaa)" )
End Sub
日付に曜日を付けて文字列に変換
結果は、『"2020/01/01(水曜日)"』となりました。
日付型の日付を文字列に変換したい場合は、Formatを使って自由自在に文字列に変換しましょう。
この記事では、日付型の日付を文字列に変換する方法についてご紹介しました。
日付を文字列に変換するには、CStrとFormatがあります。
変換する文字列の表示形式が、yyyy/mm/dd形式でいいのであれば、CStrで十分です。
和暦や曜日を加えた文字列に変換したい、という場合は、Formatを使うと便利です。
参考になればと思います。最後までご覧くださいましてありがとうございました。