Exibir milissegundos no Excel

122

Estou tentando exibir milissegundos em uma macro do Excel. Eu tenho uma coluna de números inteiros com registro de data e hora em milissegundos (por exemplo, 28095200 é 7: 48: 15.200 am) e desejo criar uma nova coluna ao lado, que mantenha uma média de execução e exiba o tempo em umhh:mm:ss.000 formato.

 Dim Cel As Range
 Set Cel = Range("B1")
 temp = Application.Average(Range("A1:A2")) / 1000
 ms = Round(temp - Int(temp), 2) * 1000
 Cel.Value = Strings.Format((temp / 60 / 60 / 24), "hh:mm:ss") _
                & "." & Strings.Format(ms, "#000")

Isso exibe apenas "mm: ss.0" na célula. No entanto, quando clico na célula, ele mostra "hh: mm: ss" na barra de fórmulas. Por que as horas estão faltando? Como posso mostrar as horas, minutos, segundos e milissegundos?

Evelyn
fonte

Respostas:

217

Clique com o botão direito do mouse na célula B1e escolha Formatar células . Em Personalizado , coloque o seguinte na caixa de texto Tipo :

[h]:mm:ss.000 

Para definir isso no código, você pode fazer algo como:

Range("A1").NumberFormat = "[h]:mm:ss.000"

Isso deve lhe dar o que você está procurando.

NOTA: Os campos especialmente formatados geralmente exigem que a largura da coluna seja grande o suficiente para todo o conteúdo do texto formatado. Caso contrário, o texto será exibido como ######.

Ben McCormack
fonte
Yay! Mas existe uma maneira de fazer isso no código? Agora, sempre que executo a macro, a formatação é redefinida. (porque estou excluindo e recriando a planilha na macro.) Cel.EntireRow.NumberFormat = "[h]: mm: ss.000" Mas isso me deu "######" na célula.
Evelyn
@ Evelyn - 3 coisas: 1) Eu adicionei o código que você precisa para definir o formato do número. 2) Verifique se a sua coluna é larga o suficiente para caber em todo o texto formatado. Veja minha nota acima. 3) Veja a resposta de Gilbert e observe o uso de 3na Roundfunção. Isso garante que você obtenha 3 casas decimais em vez de apenas 2.
Ben McCormack
Ah! Você está certo. Eu só precisava ampliar a coluna. Além disso, eu só queria uma precisão de 2 neste caso. Eu só queria que ele fosse formatado para 3. Muito obrigado pela ajuda!
Evelyn
25
Acabei de descobrir o seguinte e queria compartilhá-lo, caso outras pessoas também .tenham o mesmo problema: Se o Windows / Excel estiver configurado para a Alemanha, ele deverá ser substituído por ,, como nas casas decimais em números. Caso contrário, o Excel reclamará que não é um formato válido. Então, tem que ser[h]:mm:ss,000
gehho
6

Descobri no Excel 2007 que, se os resultados forem uma tabela de uma consulta incorporada, o ss.000 não funcionará. Eu posso colar os resultados da consulta (do SQL Server Management Studio) e formatar o horário. Mas quando eu incorporo a consulta como uma Conexão de Dados no Excel, o formato sempre fornece 0,000 como milissegundos.

Eric
fonte
4

Eu fiz isso no Excel 2000.

Esta declaração deve ser: ms = Round(temp - Int(temp), 3) * 1000

Você precisa criar um formato personalizado para a célula de resultado de [h]:mm:ss.000

Gilbert Le Blanc
fonte
-3

Primeiro, represente a época do milissegundo como uma data (geralmente 1/1/1970) e adicione seu milissegundo dividido pelo número de milissegundos em um dia (86400000):

=DATE(1970,1,1)+(A1/86400000)

Se o seu celular estiver formatado corretamente, você verá uma data / hora legível por humanos.

George
fonte
Oi George, seja bem-vindo! Infelizmente, o OP parecia pedir especificamente uma maneira de conseguir que a célula estivesse "formatada corretamente". Sua abordagem original já cobre a parte que você está abordando: a conversão do carimbo de data / hora de milissegundos em um valor de data e hora formatável. Além disso, com seis anos, essa é uma pergunta bastante antiga em que você está investindo seu tempo. Sua opinião será mais apreciada em questões mais recentes!
Carsten