Excel에서 비표준 날짜 형식을 구문 분석하려면 어떻게합니까? Excel 날짜

yyyy-mm-dd와 같은 형식의 날짜와 같은 문자열 값의 열이 있습니다 2011-Sep-13. 수식에서 사용할 수 있도록 이들을 Excel 날짜 일련 번호로 변환해야합니다.

DATEVALUE는이 형식을 인식 할 수 없습니다. 내가 #VALUE!시도하면 그냥 얻을 . 또한 대부분의 프로그래밍 언어와 달리 사용자 정의 날짜 형식을 사용하지 않습니다.

임의의 날짜 형식을 Excel 날짜 값으로 변환하려면 어떻게해야합니까?



답변

문자열 구문 분석을 수행 한 다음 적절한 형식의 값을 DATEVALUE다음과 같이 전달해야합니다 .

=DATEVALUE(RIGHT(A1,2)&"-"&MID(A1,6,3)&"-"&LEFT(A1,4))

(편집 : 업데이트 된 수식-테스트되었으며 하나의 예에서 작동합니다-입력에 따라 다듬어야 할 수도 있습니다)


답변

월 이름은 Windows 국가 별 옵션에 따라 다릅니다. 따라서 Windows 국가 별 옵션이 우크라이나어로 설정되어 있으면 DATEVALUE는 #VALUE를 반환합니다. “07-Nov-2012″에 대해 “07-Лис-2012″를 허용합니다.


답변

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