大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで日付を文字列に変換する方法をご紹介します。簡単な方法は、CStrを使う方法です。和暦に変換したり、日付に曜日もつけて文字列に変換したい、といった場合は、Formatが使えます。

はじめに

この記事では、日付型の日付を文字列に変換する方法についてご紹介します。

日付を文字列に変換するには、CStrとFormatがあります。

簡単な方は、CStrです。

ですが、文字列に変換する場合は、おそらく和暦にしたいとか、曜日もつけたい、といった場合があるかと思います。

その場合は、Formatを使って、日付を文字列に変換しましょう。

では、説明していきます。

この記事で紹介すること

  • 日付をCStrを使って文字列に変換する
  • 日付をFormatを使って文字列に変換する

目次から見たい項目へ移動すると便利ですよ。

目次

ポイントとなるVBAコード

初めに、ポイントとなる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を使って日付を文字列に変換する

日付を文字列に変換するには、VBA関数のCStrを使います。

では、文字列を日付に変換するCStrについて説明してきます。

使い方(CStr)

まず、CStrには、次のように入力します。

『文字列 = CStr(日付)』

これで、日付型の文字列を文字列に変換することができます。

やってみます。

日付を文字列に変換する

日付型の日付『#1/1/2020#』を文字列に変換してみます。

Sub TEST1()
    
    Dim A
    A = #1/1/2020# '日付型:2020/1/1
    
    MsgBox CStr(A) '文字列に変換
        
End Sub

VBAコードを実行してみます。

日付を文字列に変換

CStrを使って日付型の日付を文字列に変換した結果

結果は、『"2020/01/01"』となりました。

変数の型が、文字列となっています。

CStrを使って日付を文字列に変換すると、yyyy/mm/dd形式の文字列に変換されます。

なので、文字列に変換する際に、yyyy/mm/dd形式でいいという場合は、CStrで問題ありません。

ただ、他の表示形式にも変換したいという場合もあるかと思います。そんな場合は、Formatを使えばできます。

説明していきます。

VBAでFormatを使って日付を文字列に変換する

日付型の日付をFormatを使って文字列に変換する方法です。

Formatを使えば、いろんな表示形式の文字列に変換することができます。

使い方(Format)

まず、Formatの引数へ入力するやり方は、

『文字列 = Format(日付, 表示形式)』

となります。

では、よく使われそうな表示形式で、いくつか例を挙げていきます。

日付をyyyy/mm/dd形式の文字列に変換する

日付型の日付を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形式の文字列に変換

Formatを使って日付をyyyy/mm/dd形式の文字列に変換した結果

結果は、『"2020/01/01"』となりました。

変数の型が、文字列となっています。

日付をyyyy/m/d形式の文字列に変換する

つづいて、先ほどと似たような表示形式で、yyyy/m/d形式の文字列に変換してみます。

月と日の部分が1文字となっています。

これは、日付『"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を使って日付をyyyy/m/d形式の文字列に変換した結果

結果は、『"2020/1/1"』となりました。

Formatを使えば、自由自在に日付を文字列に変換することができます。

日付をyyyymmdd形式の文字列に変換する

日付型の日付『#1/1/2020#』をyyyymmdd形式の文字列に変換してみます。

Sub TEST4()
    
    Dim A
    A = #1/1/2020# '日付型:2020/1/1
    
    'yyyymmdd形式の文字列に変換
    MsgBox Format(A, "yyyymmdd")
        
End Sub

実行してみます。

日付をyyyymmdd形式の文字列に変換

Formatを使って日付型の日付をyyyymmdd形式の文字列に変換した結果

結果は、『"20200101"』となりました。

変数の型も、文字列となっています。

さらに、文字列から数値に変換する『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とValを使って日付型の日付を数値8桁に変換した結果

結果は、『20200101』となりました。

変数の型は、数値となっています。

数値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

実行してみます。

日付を和暦の文字列に変換

Formatを使って日付型の日付を和暦に変換した結果

結果は、『"令和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

実行してみます。

日付に曜日を付けて文字列に変換

Formatを使って日付型の日付に曜日を付けて文字列に変換した結果

結果は、『"2020/01/01(水曜日)"』となりました。

変数の型は、文字列となっています。

日付型の日付を文字列に変換したい場合は、Formatを使って自由自在に文字列に変換しましょう。

おわりに

この記事では、日付型の日付を文字列に変換する方法についてご紹介しました。

日付を文字列に変換するには、CStrとFormatがあります。

変換する文字列の表示形式が、yyyy/mm/dd形式でいいのであれば、CStrで十分です。

和暦や曜日を加えた文字列に変換したい、という場合は、Formatを使うと便利です。

参考になればと思います。最後までご覧くださいましてありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す