大体でIT
大体でIT
2020/10/27
Excel VBAで文字列や数値を日付に変換する方法についてご紹介します。文字列や数値を日付に変換すれば、簡単に日付の比較や計算ができます。文字列や数値を日付に変換するポイントを『CDate』、『Format』、『IsDate』を使って説明していきます。
この記事では、文字列や数値を日付型に変換する方法についてご紹介します。
文字列や数値を日付型に変換できれば、簡単に日付の比較や計算ができます。
文字列や数値を日付に変換する際のポイントを、『CDate』、『Format』、『IsDate』を使って説明していきます。
初めに、ポイントとなるVBAコードを記載しておきます。
VBAコードだけ確認すればいいという場合に、ご活用ください。
Dim A
'日付型に変換
A = CDate ("2020/1/1")
'数値を日付型に変換
A = CDate (Format (20200101, "@@@@/@@/@@" ))
文字列を日付に変換するには、『CDate』を使えばできます。
文字列『"2020/1/1"』の日付を日付型に変換できます。
日付型に変換するメリットは、日付の比較や計算ができる点です。
日付を足し算したり、日付の比較をしたい場合は、CDateを使って日付型に変換しましょう。
文字列を日付に変換するCDateは次のように入力します。
CDateに入力する値は、日付と認識できる文字列である必要があります。
文字列『"2020/1/1"』を日付『2020/01/01』に変換しています。
Sub TEST1()
MsgBox CDate ("2020/1/1") '日付型に変換
End Sub
文字列を日付に変換
CDateを使えば、文字列を日付型に変換できます。
日付型に変換できれば、簡単に日付を比較したり、計算することができます。
つづいて、数値を日付に変換する方法をご紹介します。
数値8桁『20200101』を日付に変換したい場合です。
数値自体はCDateで日付と認識できないためです。
日付と認識できない場合、CDateはエラーとなります。
数値『202001010』をCDateを使って日付型に変換しようとしてみます。
Sub TEST2()
MsgBox CDate(20200101 ) '日付型に変換⇒エラーになります
End Sub
数値を日付に変換:エラーとなります
数値を日付型に変換する際に、CDateが日付と認識できないため、エラーとなります。
この問題点を解消する方法は、CDateが日付と認識できる文字列へ変換してやることです。
数値を文字列へ変換するには、Formatを使ってCDateが認識できる文字列へ変換します。
数値『20200101』を日付の文字列に変換して、日付型『2020/01/01』に変換するVBAコードです。
Sub TEST3()
Dim A
'日付の文字列に変換
A = Format (20200101 , "@@@@/@@/@@" )
'日付型に変換
MsgBox CDate (A)
End Sub
数値をFormatとCDateを使って、日付に変換
結果は、日付型『2020/01/01』に変換できました。
数値を日付と認識できる文字列に変換すれば、CDateで日付型に変換できます。
ちなみに、文字列『"20200101"』も同じ方法で、日付型に変換できます。
Sub TEST4()
Dim A
'日付の文字列に変換
A = Format("20200101" , "@@@@/@@/@@")
'日付型に変換
MsgBox CDate(A)
End Sub
文字列をFormatとCDateを使って、日付に変換
日付と認識できない文字列を、日付型に変換できました。
数値などの日付と認識できない値を日付型に変換したい場合は、FormatとCDateを組み合わせて日付型に変換しましょう。
先ほど説明したように、文字列や数値を日付に変換するに、日付と認識できない場合は、エラーとなってしまいます。
エラーがでるとVBE画面がでてきてちょっと困惑してしましますので、あらかじめエラー処理をしておくといいです。
日付に変換できるかを判定するには、『IsDate』を使うとできます。
IsDateの使い方
文字列が日付として認識できるかを判定する『IsDate』は次のように入力します。
日付に変換できる:True
日付に変換できない:False
では、文字列『"2020/1/1"』を日付に変換できるかを判定して、日付型に変換してみます。
Sub TEST5()
Dim A
A = "2020/1/1"
'日付と認識できるかを判定
If IsDate (A) = True Then
MsgBox CDate(A) '日付型に変換
End If
End Sub
日付に変換できるかを判定して日付に変換
文字列『"2020/1/1"』は日付として認識できるので、日付型『2020/01/01』に変換できました。
ユーザーに日付を入力させて、日付型に変換するという場合は、IsDateを使って日付に変換できるかを判定した方がいいです。
最初に説明したように、日付型に変換するメリットは、日付の比較や計算ができる点です。
次の例は、文字列『"2020/1/1"』と『"2020/01/02"』を日付型に変換して比較したVBAコードです。
Sub TEST6()
Dim A, B
A = CDate("2020/1/1" ) '日付型に変換(2020/01/01)
B = CDate("2020/01/02" ) '日付型に変換(2020/01/02)
'日付を比較
If A < B Then
MsgBox B & "の方が大きい"
Else
MsgBox A & "の方が大きい"
End If
End Sub
日付を比較
結果は、『2020/01/02の方が大きい』となりました。
次に、文字列を日付型に変換して日付を計算してみます。
次の例は、文字列『"2020/1/1"』と『"2020/1/11"』の差分をとって、日付間の日数を計算するVBAコードです。
Sub TEST7()
Dim A, B
A = CDate("2020/1/1" ) '日付型に変換(2020/1/1)
B = CDate("2020/1/11" ) '日付型に変換(2020/1/11)
'日付の差分をとる
MsgBox B - A
End Sub
日付を計算
日付を表示するだけではなく、比較や計算をしたい場合には、『CDate』を使って日付型に変換しましょう。
この記事では、文字列や数値を日付型に変換する方法についてご紹介しました。
文字列を日付型に変換するには、『CDate』を使えばできます。
数値を日付型に変換するには、『Format』と『CDate』を組み合わせて日付型に変換しましょう。
ユーザーに日付を入力させるような場合には、入力ミスを想定しておいて『IsDate』でエラー処理をするといいです。
日付の比較や計算をしたい場合は、『CDate』を使って日付型に変換しましょう。
参考になればと思います。最後までご覧くださいましてありがとうございました。