Conversão de data em string do Excel


125

Em uma célula na planilha do Excel, tenho um valor de Data como:

01/01/2010 14:30:00

Quero converter essa data em texto e também quero que o texto seja exatamente igual a data. Portanto, o valor de Date 01/01/2010 14:30:00deve ser semelhante, 01/01/2010 14:30:00mas internamente deve ser Text.

Como posso fazer isso no Excel?


6
Muitos programadores esnobes argumentariam que o Excel não é um ambiente de programação e, portanto, pode fechar esta questão. Espero que não, mas apenas para avisar.
perfil completo de Nick Fortescue

4
O Excel pode não ser um IDE completo, mas se você receber dados no Excel e precisar de resultados no Excel, alguma programação VBA faz todo o sentido.
Br

Respostas:


241
=TEXT(A1,"DD/MM/YYYY hh:mm:ss")

(24 horas)

=TEXT(A1,"DD/MM/YYYY hh:mm:ss AM/PM")

(horário padrão)


3
Referência completa para a função TEXT especialmente saber como formatos definidos: consulte Diretrizes para data e hora formatos desta página office.microsoft.com/en-us/excel-help/...
Codea

Quando tento fazer essa conversão, existe um "#AD?" texto e diz que algo está errado.
AloneInTheDark 31/03

1
@AloneInTheDark Quando você segue o link do codea, os formatos funcionam, mas apenas se você tiver um sistema operacional Windows que use os formatos em inglês. O meu usa os formatos holandeses, o que significa que, por exemplo, "DD / MM / AAAA hh: mm: ss" se torna "DD / MM / JJJJ uu: mm: ss" porque em holandês, 'ano' é 'jaar' e 'hour' é 'uur', ou seja, outras letras iniciais (enquanto 'dia', 'mês', 'minutos' e 'segundos' começam com as mesmas letras em holandês e inglês). Basicamente, traduza as letras iniciais dos formatos para o idioma do seu sistema operacional.
Sem Vanmeenen

3
E a conversão oposta é feito comDATEVALUE("01/01/2010")
Zenadix

Alguma maneira de usar o formato que já estou usando para a exibição de Data sem precisar especificá-lo?
palswim

8

Aqui está uma abordagem VBA:

Sub change()
    toText Sheets(1).Range("A1:F20")
End Sub

Sub toText(target As Range)
Dim cell As Range
    For Each cell In target
        cell.Value = cell.Text
        cell.NumberFormat = "@"
    Next cell
End Sub

Se você está procurando uma solução sem programação, a pergunta deve ser movida para SuperUser.


6

Aqui está outra opção. Use o assistente 'Excel to Columns' incorporado do Excel. É encontrado na guia Dados no Excel 2007.

Se você tiver uma coluna selecionada, os padrões para o tipo de arquivo e os delimitadores deverão funcionar, e solicitará que você altere o formato dos dados da coluna. A escolha do texto o força ao formato de texto, para garantir que ele não seja armazenado como uma data.


4

Em alguns contextos, o uso antecipado de um caractere 'funcionará, mas se você salvar no CSV e carregar novamente, isso será impossível.

'01/01/2010 14:30:00

4

Não foi possível obter a fórmula TEXT () para funcionar

A solução mais fácil foi copiar e colar no Bloco de Notas e voltar ao Excel com a coluna definida como Texto antes de colar novamente

Ou você pode fazer o mesmo com uma fórmula como esta

=DAY(A2)&"/"&MONTH(A2)&"/"&YEAR(A2)& " "&HOUR(B2)&":"&MINUTE(B2)&":"&SECOND(B2)


1
Voto positivo, porque, para meu entendimento, este é o único método de trabalho que não está sujeito às configurações de idioma. Se você deseja compartilhar seu trabalho, usar TEXT () trará problemas. Mesmo em um país (por exemplo, Alemanha), você encontrará pessoas com configurações em alemão e inglês.
Dr. V

1
muito obrigado e voto positivo! É trabalhar para mim, porque eu não posso para uso = (fórmulas biblioteca Python) TEXT
lestat_kim

1

Se você não estiver usando programação, faça o seguinte (1) selecione a coluna (2) clique com o botão direito do mouse e selecione Formatar células (3) Selecione "Personalizado" (4) Logo abaixo de "Tipo:" digite dd / mm / aaaa hh: mm : ss


0

No Excel 2010, a resposta do marg funcionou apenas para alguns dos dados que eu tinha na minha planilha (eles foram importados). A solução a seguir funcionou em todos os dados.

Sub change()
    toText Selection
End Sub

Sub toText(target As range)
Dim cell As range
Dim txt As String
    For Each cell In target
        txt = cell.text
        cell.NumberFormat = "@"
        cell.Value2 = txt
    Next cell
End Sub

0

Não faço ideia do ano de publicação da pergunta; pode ser velho agora. Portanto, espero que minha resposta seja mais uma referência para futuras perguntas semelhantes após o meu post.

Não sei se alguém já deu uma resposta semelhante à que estou prestes a dar, o que pode resultar - eu acho - sendo o mais simples, mais direto e mais eficaz: se alguém já deu, peço desculpas , mas eu não vi. Aqui, minha resposta usando CStr em vez de texto:

A célula A1 A1 contém uma data e usando o código VBA:

Dim strDate As String

'Convert to string the value contained in A1 (a date)
strDate = CStr([A1].Value)

Depois, você pode manipulá-lo como qualquer string comum usando funções de string (MID, ESQUERDA, DIREITA, LEN, CONCATENATE (&), etc.)


-1

A resposta selecionada não funcionou para mim, pois o Excel ainda não estava convertendo o texto para a data. Aqui está a minha solução.

Diga que na primeira coluna, A, você tem dados do tipo, 2016/03/25 21:20:00mas é armazenado como texto. Em seguida, na coluna B, escreva =DATEVALUE(A1)e na coluna C, escreva =TIMEVALUE(A1).

Em seguida, na coluna D, =B1+C1adicione os formatos numéricos da data e hora.

Por fim, copie os valores de D para a coluna E clicando com o botão direito do mouse na coluna E e selecione Paste Special -> Paste as Values.

Destaque os valores numéricos na coluna E e altere o tipo de dados para data - prefiro usar uma data personalizada do formulário YYYY-MM-DD HH:MM:SS.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.