이 문자열을 변환해야합니다.
Donnerstag, Juni 05 2014
유용한 엑셀 날짜로. 나는 다음과 같은 것을 사용하려고합니다.
DATEVALUE(MID(A1,FIND(",",A1)+2,LEN(A1))))+RIGHT(A1,11)
그러나 그것을 해결할 수 없습니다. 누군가 도울 수 있습니까?
감사.
이 문자열을 변환해야합니다.
Donnerstag, Juni 05 2014
유용한 엑셀 날짜로. 나는 다음과 같은 것을 사용하려고합니다.
DATEVALUE(MID(A1,FIND(",",A1)+2,LEN(A1))))+RIGHT(A1,11)
그러나 그것을 해결할 수 없습니다. 누군가 도울 수 있습니까?
감사.
답변:
변환하려는 셀을 선택하고이 짧은 매크로를 실행하십시오.
Sub dural()
Dim dy As Long, mnth As Long, yr As Long
Dim t As String, U As Long, d As Date
Dim r As Range
bry = Split("Januar,Februar,März,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember", ",")
For Each r In Selection
t = r.Text
ary = Split(t, " ")
U = UBound(ary)
yr = CLng(ary(U))
dy = CLng(ary(U - 1))
For i = 0 To 11
If ary(U - 2) = bry(i) Then
mnth = i + 1
End If
Next i
d = DateSerial(yr, mnth, dy)
r.Value = d
Next r
End Sub
그런 다음 원하는 형식을 결과 값에 적용하십시오.
편집 # 1 :
이 변환을 함수 (UDF ()) 로 사용하려면 다음 코드를 사용하십시오.
Public Function EngDate(inpt As String) As Date
Dim dy As Long, mnth As Long, yr As Long
Dim t As String, U As Long, d As Date
bry = Split("Januar,Februar,März,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember", ",")
t = inpt
ary = Split(t, " ")
U = UBound(ary)
yr = CLng(ary(U))
dy = CLng(ary(U - 1))
For i = 0 To 11
If ary(U - 2) = bry(i) Then
mnth = i + 1
End If
Next i
d = DateSerial(yr, mnth, dy)
EngDate = d
End Function
이를 위해 Power Query Add-In을 사용합니다. Excel 2016부터 "쿼리 및 변환"섹션의 데이터 리본에 Power Query가 내장되어 있습니다.
PQ에는 일반적으로 코딩없이 작동하는 날짜 변환 기능이 내장되어 있습니다. PQ 편집기에서 열을 선택하고 데이터 유형을 날짜로 설정하십시오.
영어 Excel이 있지만 동등한 날짜 문자열 "2014 년 6 월 5 일 목요일"을 처리하고 열을 추가하여 주중 요일 (숫자 및 텍스트)을 얻을 수 있습니다.
PQ UI에서 주변을 클릭하여 만들거나 여기에 샘플 PQ 스크립트가 있습니다 (입력이 열 제목이 "입력 날짜"인 "Table1"이라는 테이블에 있다고 가정).
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Input Date", type date}}),
#"Inserted Week of Year" = Table.AddColumn(#"Changed Type", "WeekOfYear", each Date.WeekOfYear([Input Date]), type number),
#"Inserted Day of Week" = Table.AddColumn(#"Inserted Week of Year", "DayOfWeek", each Date.DayOfWeek([Input Date]), type number),
#"Added Day of Week Name" = Table.AddColumn(#"Inserted Day of Week", "Day of Week Name", each Date.ToText([Input Date], "dddd"))
in
#"Added Day of Week Name"
시행 착오를 통해이 수식을 사용하여 해결책을 찾았습니다.
=DATUM((WERT(RECHTS(RECHTS(G5;LÄNGE(G5)-FINDEN(" ";G5));4)));
(MONAT(DATWERT(TEXT(LINKS(RECHTS(G5;LÄNGE(G5)-FINDEN(" ";G5));FINDEN(" ";RECHTS(G5;LÄNGE(G5)-FINDEN(" ";G5)))-1);1)&" 1")));
(WERT(TEIL(RECHTS(G5;LÄNGE(G5)-FINDEN(" ";G5));FINDEN(" ";RECHTS(G5;LÄNGE(G5)-FINDEN(" ";G5)))+1;2))))
코드는 독일어로되어 있지만 아이디어를 얻습니다. 방금 필요한 날짜의 각 부분을 추출하여 다시 정리했습니다.
다른 sugguestion에 감사드립니다-모두 좋습니다. 그러나 나는 정상적인 공식을 사용하고 싶었습니다.)