Página 1 de 1

Macro formatar célula

Enviado: 19 Jul 2019 às 11:17
por enunes
Bom dia Senhores,

Preciso criar uma macro para que em determinada coluna os valores que estão como data e hora sejam alteradas somente para data. Porém não só formatação, pois alimenta tabela dinâmica e na tabela a hora seria mostrada. Fiz uma macro selecionando a coluna e localizando e alterando os valores, porém desta forma só aceita a data que digito.

Haveria alguma forma de alterar na coluna mesmo com várias datas e horários ?

Esse o código gerado na gravação da macro. Em anexo somente a coluna que preciso alterar.

Obrigado.

Sub Macro9()
'
' Macro9 Macro
'

'
Columns("E:E").Select
Application.ReplaceFormat.NumberFormat = "m/d/yyyy"
Selection.Replace What:="12/07/2019*", Replacement:="12/07/2019", LookAt _
:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=True
End Sub

Macro formatar célula

Enviado: 19 Jul 2019 às 11:45
por Reinaldo
Experimente:
Código: Selecionar todos
Sub alteradata()
Dim x As Long
For x = 2 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    Cells(x, 1).Value = Int(Cells(x, 1).Value)
Next
    Columns("A:A").Select
    Selection.NumberFormat = "m/d/yyyy"
Cells(1, 1).Select
End Sub

Macro formatar célula

Enviado: 19 Jul 2019 às 12:01
por enunes
Apesar de não ter entendido muito o início deu perfeitamente certo.. Obrigado.

Re: Macro formatar célula

Enviado: 19 Jul 2019 às 17:14
por Jimmy
Nunes,

É importante ter o problema resolvido, mas também é entender o como. Vou te explicar.

Os valores de data/hora no excel são armazenados como um número, que seria a quantidade de dias decorridos desde 01/01/1900. Por isso, se digitar zero em uma célula, e formatar como data, resultará 00/01/1900. Se em outra célula digitar hoje() e formatar como número, obterá 43665, que é a quantidade de dias entre 1900 e hoje.

As horas são guardadas na parte fracionária desse número. Assim, se digitar 43665,25 resultadá no dia de hoje, + 25% de um dia, logo, 19/07/2019 6:00h. O valor 43666,666666 resultará amanhã à 16h pois 16 é 66,666% de um dia.

Para tirar a hora de uma data basta pegar a sua parte inteira, e a função INT usada na macro faz isso.

Na sua planilha, se não quiser usar macro, pode criar uma coluna auxiliar que pegue a parte inteira da célula que tem a data+hora, e essa coluna passará a ter somente a data, com hora zero. Nem sempre é assim, mas nesse caso, a função de planilha é igual à de macro: ambas INT(valor).

Jimmy San Juan