はじめに
今回は、文字列を日時に変換する方法を解説します。
日付を取り扱う関数やメソッドなどの引数を渡す際、Date型でないといけない場合があります。
そういった場合に、お役に立てると思いますので、是非最後までお付き合いください。
この記事を読むメリット
- 文字列を日時に変換する方法が分かります。
- 日付型に変換できる文字列と、できない文字列について分かります。
- 変換元データが「yyyyMMddhhmmss」形式など、日付形式でない場合の対処法も解説します。
- 「日時」「日付のみ」「時刻のみ」に変換する方法も解説しています。
- コピペで使える実践的なサンプルコードも掲載しています。
前提
日付に変換できる文字列
変換する前の文字列は、当然日時が明確に分かるようにする必要があります。
以下に、「変換できる文字列」と「変換できない文字列」の例を示します。
変換できる文字列
- 2020/08/31 10:21:30
- 2020-08-31 10:21:30
- 2020年08月31日 10時21分30秒
- 令和2年 8月31日 10時21分30秒
- R02年 08月31日 10時21分30秒
変換できない文字列
- 20200831102130
基本情報
文字列から日時に変換する関数
文字列を日時に変換する関数は複数存在します。
それぞれ「どういった形式に変換するのか」により、用途が異なります。
# | 関数 | 説明 |
---|---|---|
1 | CDate | 文字列を日時に変換する |
2 | DateValue | 文字列を日付に変換する(時刻は切り捨てられる) |
3 | TimeValue | 文字列を時刻に変換する(日付は切り捨てられる) |
CDate関数
文字列を日時に変換する場合は、CDate関数を使用します。
引数に文字列を指定すると、その文字列をDate型にし返却します。
構文
構文
CDate(文字列)
DateValue関数
文字列を日付に変換する場合は、DateValue関数を使用します。
引数に文字列を指定すると、その文字列をDate型にし返却します。
※時刻は切り捨てられます。
構文
DateValue(文字列)
TimeValue関数
文字列を時刻に変換する場合は、TimeValue関数を使用します。
引数に文字列を指定すると、その文字列をDate型にし返却します。
※日付は切り捨てられます。
構文
TimeValue(文字列)
サンプルコード
文字列を日時に変換して書き出す
サンプルコード
Public Sub convStrToDate()
Dim str As String ' 文字列
Dim dateTimeVal As Date ' 日時データ
Dim dateVal As Date ' 日付データ
Dim timeVal As Date ' 時刻データ
Dim currentRowIndex As Integer ' カレント行Index
Dim endRowIdex As Integer ' 最終行Index
' 最終行取得
endRowIdex = ActiveSheet.UsedRange.Rows.Count
For currentRowIndex = 2 To endRowIdex
' 文字列取得
str = Cells(currentRowIndex, 2)
' 変換処理
dateTimeVal = CDate(str) ' 日時データ
dateVal = DateValue(str) ' 日付データ
timeVal = timeValue(str) ' 時刻データ
' 日時の書き出し
Cells(currentRowIndex, 3).Value = dateTimeVal ' 日時データ
Cells(currentRowIndex, 4).Value = dateVal ' 日付データ
Cells(currentRowIndex, 5).Value = timeVal ' 時刻データ
Next currentRowIndex
End Sub
実行結果(クリックで拡大されます)


最後に
今回は、文字列から日時に変換する方法を解説しました。
本記事が皆さんのお力になれば幸いです!
コメント