독일어 날짜 문자열을 영어로 변환 (Excel)


1

이 문자열을 변환해야합니다.

Donnerstag, Juni 05 2014

유용한 엑셀 날짜로. 나는 다음과 같은 것을 사용하려고합니다.

DATEVALUE(MID(A1,FIND(",",A1)+2,LEN(A1))))+RIGHT(A1,11)

그러나 그것을 해결할 수 없습니다. 누군가 도울 수 있습니까?

감사.


독일어 팩이나 Excel 버전이 없으므로 실험 할 수는 없지만 셀 (또는 범위)을 마우스 오른쪽 버튼으로 클릭하고 셀 서식을 사용하여 재생하면 Excel을 다음과 같이 인식 할 수 있습니다. 날짜. 아니면 엑셀이 독일어를 못하는 문제입니까? (나처럼)
Tyson

내 엑셀은 실제로 독일어이므로 문제가되어서는 안됩니다. 셀은 그것이 날짜이지만 그렇지 않다고 말합니다. 기본적으로 텍스트 문자열입니다.
egg

귀하의 질문은 좋은 답변을지지하지 않습니다. 첫째, 이미 이 Gemran 형식으로 정확히 아니에요 있지만은 "가능한 엑셀 날짜". 그것은 영어 형식과 독일어 어휘를 혼합 한 것입니다. 둘째, Excel에서 실제로 처리를 거부하면 사용하기 쉬운 UN * X / Cygnus 셸 명령으로 작업을 수행 할 수 있지만 사용 가능한 도구 상자에 대한 힌트는 제공하지 않습니다. 셋째, 필요한 결과 형식을 말하는 것이 아닙니다.
CMD

날짜 사용자 정의 형식을 변경할 때 아무런 변화가 없다는 점에서 일반적인 날짜가 아닙니다. 다시 포맷 할 수 없습니다. 이상적으로는 사용 가능한 짧은 날짜로 변환하는 인셀 수식을 원합니다. 마지막으로 주 번호를 찾고 있습니다. 현재 weeknum은 오류를 제공합니다.
egg

답변:


2

변환하려는 셀을 선택하고이 짧은 매크로를 실행하십시오.

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

여기에 이미지 설명을 입력하십시오


고맙습니다 ... 셀 수식을 통해 그렇게 할 수있는 방법이 있다면 좋을 것입니다 ... 이는 다양한 보고서에 포함되어야하기 때문에.
egg

@egg EDIT # 1을
게리의 학생

많은 감사합니다. 내가 또 다른 해결책을 찾았다는 것을 알 수 있습니다-그러나 이것에 감사합니다!
egg

0

이를 위해 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"


감사. 나는 공식 솔루션을 사용할 것입니다. 그러나 이것에 감사드립니다 ... 어쨌든 시도 할 수 있습니다! :)
egg

0

시행 착오를 통해이 수식을 사용하여 해결책을 찾았습니다.

=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에 감사드립니다-모두 좋습니다. 그러나 나는 정상적인 공식을 사용하고 싶었습니다.)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.