No Excel, dado um número que representa uma certa quantidade de tempo (por exemplo, 25,5 horas), existe uma maneira de formatá-lo para que ele apareça como 1d 1h 30m?
Pergunta de recompensa:
Existe uma maneira de adicionar meses a esse formato? por exemplo, 1M 1d 1h 1m. O problema com o formato atual é que ele não lida com nada durante 32 dias (ou seja, 32,5 é formatado como 1d 8h 0m)
Respostas:
Você precisará converter essas horas em algo que o Excel possa entender.
Supondo que suas horas estejam na forma decimal (por exemplo, 25,5 horas, 37,25 horas), veja como você pode fazê-lo:
Etapa 1:
Divida a quantia por 24.
Isso obtém a proporção hora / dia ou converte a quantia em uma fração de dia (por exemplo, 25 horas converte em 1 1/24 ou 1,04).
Etapa 2:
altere o formato numérico da célula que contém a fórmula ou o valor convertido para Personalizado
(pressione Ctrl+ 1> Personalizado). Use esta string de formato:
0.0416551 = 0:59:59 em decimal
ou
ou
Exemplo :
fonte
Ctrl
+1
no post como você? Muito Obrigado!<kbd></kbd>
tags. :)Se o tempo é em horas, é o seguinte:
fonte
=TRUNC(A1/24) & "d " & TRUNC(MOD(A1,24)) & "h " & ROUND((A1-TRUNC(A1))*60,0) &"m"
.(não é possível adicionar como comentário, pois não tenho 50 reputação)
Para exibir meses, é possível usar o seguinte formato (observe que isso não atende diretamente às suas necessidades exatas, mas você pode modificá-lo conforme apropriado). Também adicionei algumas cores às minhas strings para esclarecer os intervalos de tempo: no exemplo principal Vermelho por mais de um dia, preto por um dia. O segundo exemplo tem vermelho para o ano +, azul esverdeado entre um quarto e um ano e azul caso contrário. Obviamente, você pode usar diferentes especificações de formatação conforme desejar.
[Red][>1]yy\y mm\m dd\d hh:mm:ss;[Black][<=1]hh:mm:ss;[Red]-0.000000;[White]@
ou[Red][>=364.5]yy\y mm\m dd\d;[Color50][<=122]mm\m dd\d;[Color5]mm\m dd\d;[Black]@
Para formatar "32,5" como 32d 12:00:00, você pode usar
[d]\d hh:mm:ss
, observe os colchetes, indicando que deseja incluir valores maiores que 31 para o número de dias.A notação \ instrui o excel a incluir especificamente a letra após o símbolo \, em vez de interpretá-la como metadados para o comando (por exemplo, d, sem barra, produziria imediatamente os dias novamente). Isso é equivalente à notação "" que você vê em outros exemplos.
Algumas limitações e / ou bugs:
1) você não pode especificar mais de quatro tipos de formatação, o último dos quais deve ser apenas para texto. Isso significa que apenas três são utilizáveis para formatar datas, a terceira das quais não pode conter comparações maiores ou menores que as.
2) o mm em meses é realmente alto em 1 ao fazer uma diferença de data (a partir do Excel 2010), pois o Excel realmente armazena as diferenças de data como DateTimes completos e não há 0 mês, mas janeiro é o primeiro mês. Os dias parecem não ter esse problema, pois "1.1" é exibido como 1 dia e 0,9 é exibido como 0 dias (ambos com 1 mês: P). Eu não sei como fazer contas no diálogo de estilo de célula (por exemplo, (mm-1) \ m); portanto, se você realmente deseja que esses números sejam precisos (subtraia 1 do mês), será necessário escrever um vB script para convertê-lo e exibir a sequência final de texto.
3) O Excel não lida adequadamente com as diferenças de horário negativas
Como alternativa, você pode fazer a formatação na própria célula com uma fórmula como
=IF((B2-A2)>1,DATEDIF(A2,B2,"y")&"y "&TEXT(DATEDIF(A2,B2,"ym"),"00")&"m "&TEXT(DATEDIF(A2,B2,"md"),"00")&"d",TEXT(A2-B2,"hh:mm:ss"))
Isso exibirá as informações como hh: mm: ss se for menor que um dia e y MM dd se for maior que um dia. Isso não estará sujeito ao erro de menos de um mês, como acima. No entanto, essa célula é realmente texto e não é mais um valor numérico. Portanto, você não pode (diretamente) fazer mais cálculos com isso.
fonte