1

Мне нужно преобразовать эту строку:

Donnerstag, Juni 05 2014

в удобную дату Excel. Я пытаюсь использовать что-то вроде:

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

но не могу решить это. Может кто-нибудь помочь?

Благодарю.

3 ответа3

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

Затем примените любое желаемое форматирование к результирующим значениям.

EDIT # 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

0

Я бы использовал Power Query Add-In для этого. В Excel 2016 Power Query встроен в ленту данных в разделе "Получить и преобразовать".

PQ имеет встроенные функции преобразования даты, которые обычно работают без какого-либо кодирования. В редакторе PQ просто выберите столбец и установите тип данных на дату.

У меня английский Excel, но мне удалось обработать эквивалентную строку даты «Четверг, 5 июня 2014 года» и добавить столбцы, чтобы получить «Неделя года» и «День недели» (число и текст).

Вы можете создать это, просто щелкнув в пользовательском интерфейсе PQ, или вот пример PQ-сценария, который поможет вам (предполагается, что ваш ввод находится в таблице с именем "Table1" с заголовком столбца "Input Date").

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"

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))))

Код на немецком языке, но вы поняли. Я просто извлек каждую часть даты, в которой я нуждался, и снова собрал ее.

Спасибо за другие предложения - все они хороши. Но я хотел использовать нормальную формулу;)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .