convertendo a cadeia de data alemã para o inglês (Excel)

1

Eu preciso converter essa string:

Donnerstag, Juni 05 2014

em uma data de excel utilizável. Estou tentando usar algo como:

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

mas não pode resolver isso. Alguém pode ajudar?

Obrigado.

    
por egg 05.10.2015 / 15:13

3 respostas

2

Selecione as células que você deseja converter e execute esta macro curta:

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

Em seguida, aplique a formatação desejada aos valores resultantes.

EDIT # 1:

Para usar essa conversão como uma função (UDF ()) , use o seguinte código:

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

    
por 05.10.2015 / 16:39
0

Eu usaria o suplemento de consulta de energia para isso. No Excel 2016, o Power Query é incorporado à faixa de opções Dados na seção "Obter e transformar".

O PQ tem funções de conversão de data incorporadas que normalmente funcionam sem codificação. No Editor PQ, basta selecionar a coluna e definir o Tipo de Dados para Data.

Eu tenho o Excel em inglês, mas consegui processar uma sequência de datas equivalente "quinta-feira, 5 de junho de 2014" e adicionar colunas para obter a semana do ano e o dia da semana (número e texto).

Você pode construir isso apenas clicando na interface do usuário do PQ, ou aqui está um exemplo de script PQ para você (presume que sua entrada está em uma tabela chamada "Tabela1", com um cabeçalho Coluna de "Data de Entrada") .

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"

    
por 06.10.2015 / 07:55
0

Por tentativa e erro, encontrei uma solução usando esta fórmula:

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

o código está em alemão, mas você entendeu. Eu acabei de extrair cada parte da data que eu precisava e colocá-la de volta novamente.

Obrigado pelos outros sugests - todos eles bons. Mas eu queria usar uma fórmula normal;)

    
por 06.10.2015 / 08:13