私は形式の日付のような文字列値の欄持つyyyy-mm-dd
などを、2011-Sep-13
。これらを数式で使用できるように、これらをExcelの日付シリアル番号に変換する必要があります。
DATEVALUEはこの形式を認識できません。やって#VALUE!
みるとすぐに手に入ります。また、ほとんどのプログラミング言語とは異なり、カスタムの日付形式は使用しません。
任意の日付形式をExcelの日付値に変換するにはどうすればよいですか?
私は形式の日付のような文字列値の欄持つyyyy-mm-dd
などを、2011-Sep-13
。これらを数式で使用できるように、これらをExcelの日付シリアル番号に変換する必要があります。
DATEVALUEはこの形式を認識できません。やって#VALUE!
みるとすぐに手に入ります。また、ほとんどのプログラミング言語とは異なり、カスタムの日付形式は使用しません。
任意の日付形式をExcelの日付値に変換するにはどうすればよいですか?
回答:
文字列解析を行ってから、適切な書式設定された値をDATEVALUE
次のように渡す必要があります。
=DATEVALUE(RIGHT(A1,2)&"-"&MID(A1,6,3)&"-"&LEFT(A1,4))
(編集:更新された式-テストされ、1つの例で動作します-入力に応じて調整する必要がある場合があります)
PARSEDATE([string_value], [date format])
Excels DateValue関数は地域に依存します。ヨーロッパで「04-11-2008」のような文字列を解析すると、11月4日として、米国では4月11日として解析されます。
これを回避するには、DateSerial関数を使用して、自分で解析を行うことができます。これは、独自の非標準の日付形式にも簡単に適合させることができます。
' Region independent date parsing
' Expects a datetimestr in the format "04-11-2008 21:39:39"
' The function VBA.DateTime.DateValue() mixes up the date and month in different regions
Function parseDateTime(dateTimeStr As String) As Date
Dim parts As Variant
parts = VBA.Strings.Split(dateTimeStr, " ")
Dim datePart As String, timePart As String
datePart = parts(0)
timePart = parts(1)
Dim dateParts As Variant, day As Integer, month As Integer, year As Integer
dateParts = VBA.Strings.Split(datePart, "-")
day = dateParts(0)
month = dateParts(1)
year = dateParts(2)
Dim parsed_date As Date, parsed_time As Date
parsed_date = VBA.DateTime.DateSerial(year, month, day)
parsed_time = VBA.DateTime.TimeValue(timePart)
parseDateTime = parsed_date + parsed_time
End Function