Segundos em hh:mm:ss no Excel

Você já precisou converter um valor expresso em segundos para horas, minutos e segundos (HH:MM:SS) usando o Excel?

Se você é um usuário do Excel no dia-a-dia, pode ser que tenha uma planilha onde estes valores estão em uma determinada coluna, apenas esperando para serem convertidos e utilizados em um relatório que você está gerando. Se você é um usuário um pouco mais avançado e está envolvido com programação de macros em VBA, provavelmente já passou por pelo menos uma situação em que, dado um tempo de processamento de uma rotina ou job em segundos, era necessário realizar e apresentar os resultados desta conversão.

Neste artigo, vou lhes mostrar como atingir os dois resultados, de forma muito simples.

Sou um usuário comum do Excel, o que preciso fazer?

Ao me referir a usuário comum, estou apenas dizendo que você nunca ouviu falar em VBA — ou que você não precisa disso, no momento.

Neste caso, dê uma olhada na imagem a seguir. A coluna apresenta valores hipotéticos em segundos, sendo estes números inteiros, ou seja, sem casas decimais. Na coluna estão representados os tempos, já expressos em horasminutos e segundos. Para chegar a este resultado, você precisa apenas de uma divisão simples e de uma formatação, oferecida pelo próprio Excel. Vejamos:

Tomando por base a célula B2, vamos inspecionar seu conteúdo:

Veja que o número total de segundos da célula A2 (33312) está sendo dividido por 86400. Este não é um valor aleatório: Representa o total de segundos existentes em um dia completo. Chega-se a este valor multiplicando-se 60 segundos x 60 minutos x 24 horas, e trata-se de uma constante, ou seja, não haverá mudança neste total, pois os dias como os conhecemos sempre terão esta quantidade de segundos.

Mas, como eu disse anteriormente, a divisão acima precisa estar acompanhada de uma formatação. Existem diversas maneiras de acessar as opções de formatação de células no Excel, mas vou me ater a uma que você pode acionar a partir do próprio teclado. Selecione as células que você deseja formatar e pressione a combinação de teclas CTRL + 1.

Uma vez tendo acessado as opções de formatação do conjunto de células, escolha, na guia Número, entre as categorias apresentadas, a opção Personalizado. Veja que existe uma lista de valores pré-definidos, e que basta você escolher a opção hh:mm:ss entre as que estão disponíveis. Uma vez feita a seleção, clicar sobre o botão OK resultará na formatação desejada, conforme a primeira imagem que ilustra este texto.

DICA: Se ao invés de representar seus valores em horas, minutos e segundos você precisa representá-los em diashorasminutos segundos, nada tema. Utilizando o mesmo método descrito acima, você pode digitar uma formatação diferente, usando o formato dd:hh:mm:ss e obter seu resultado facilmente, tal como demonstro abaixo:

Espero que as dicas acima tenham ajudado você.

Sou um conhecedor de VBA. Como resolvo isso com programação?

Usuários de VBA, ou Visual Basic for Applications estarão em busca de uma solução que utilize código. Para que isso seja possível, no entanto, as considerações que explico acima são as mesmas. Você também precisará converter o valor total em segundos para um decimal, utilizando a divisão por 86400. Uma vez que tenha este valor, pode apresentá-lo na formatação que desejar.

Estou assumindo que você está familiarizado com o editor de código do Excel, então abra-o e utilize a função abaixo:

Function SegundosEmTempo(celula As Range)
' Função simples para converter um valor em segundos para hh:mm:ss
' Por Daniel Santos
' http://danielsantos.org/
'
 If Not IsNumeric(celula.Value) Then
 'Retorna um erro caso o valor não seja numérico
 SegundosEmTempo = CVErr(xlErrNum)
 Else
 'Divide o valor da célula por 86400 e formata, como no caso
 'de uma planilha comum...
 SegundosEmTempo = Format(celula.Value / 86400, "dd:hh:mm:ss")
 End If
End Function

Lembrando que já que criamos o código acima como uma função, o mesmo pode ser executado através da própria planilha no Excel, bem como reaproveitado ou ajustado conforme suas próprias necessidades, em seu próprio código.

Espero ter ajudado.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *