Convertendo número em tempo na mesma célula no Excel

0

Estou criando o gerenciador de agendas e encontrei isto:

O usuário é solicitado a digitar um número quando deseja iniciar uma determinada tarefa, por exemplo, o número "13" deve representar 13:00. Mas depois que ele digita esse número, eu preciso mostrar como 13:00.

]

Para fazer isso, eu preciso dividir o número por 24 e, em seguida, esse número é conversível no formato que eu quero (13:00). Mas não tenho ideia de como inserir esse número de volta na mesma célula.

É possível ou existe outra maneira de fazer isso? Também deve funcionar se eu digitar meia hora (13:30).

    
por Meio 06.07.2018 / 14:37

2 respostas

2

EDIÇÃO PRINCIPAL

Com base no feedback, esta é uma das principais reescritas do post original.

Em vez de converter o número na mesma célula, você pode converter o número durante os cálculos. Com essa abordagem, o usuário acha que está inserindo o horário no formato de 24 horas, mas, na realidade, é um número inteiro convertido em tempo. Abaixo está uma amostra.

AcolunaHcontémumadescriçãodoqueestánacolunaGparaessalinha.

Achaveparaousuárioéinseriroshoráriosnoformatode24horassemosdoispontos,oqueéobservadonobannernapartesuperiordaplanilha.Sevocêformatarascélulasdetempo(linhas3,4e6)comumformatopersonalizadode##":"00 , elas parecerão estar exibindo um formato de hora padrão.

Aqui estão o conteúdo e as fórmulas das células:

G3: Insira a hora de término aqui (formato de 24 horas sem os dois pontos)
O valor inserido no exemplo é 1645 , mas será exibido como 16:45

G4: Insira a hora de início aqui (formato de 24 horas sem os dois pontos)
O valor inserido no exemplo é 820 , mas será exibido como 8:20

G5: =TIME(INT(G3/100),MOD(G3,100),0)-TIME(INT(G4/100),MOD(G4,100),0)+IF(G3<=G4,1,0) (8:25)

Isso subtrai os dois tempos e corrige erros de tempo negativos ( +IF(G3<=G4,1,0) ).

A função TIME recebe entrada como horas, minutos e segundos TIME(h,m,s) . Desde G3 & G4 são inteiros, as horas são encontradas dividindo-se por 100 ( INT(G3/100) ou os dígitos exibidos à esquerda de : ), os minutos tomando o restante dessa divisão ( MOD(G4,100) ou os dígitos exibidos à direita do : ), e os segundos são zero, já que estamos lidando com minutos inteiros.

O resultado será um valor de tempo real e a célula deve ser formatada como hora ou personalizada ( h:mm ).

G6: Insira o horário de pausa / almoço aqui (formato de 24 horas sem os dois pontos)
O valor inserido no exemplo é 30 , mas será exibido como :30

G7: =(G5-TIME(INT(G6/100),MOD(G6,100),0))*24 (7,92)

Isso converte G6 em um formato de hora, conforme descrito acima para a célula G5, e subtrai os dois tempos.

A diferença é multiplicada por X24 para dar uma resposta em horas decimais, porque o meu sistema exigia esse tipo de entrada. Se isso é o que você precisa, formate a célula como um número com duas casas decimais.

Se você não precisa de horas decimais, deixe nosso *24 da fórmula e formate a célula como o tempo.

Na minha folha completa, a coluna G é repetida para cada dia da semana. Espero que isso ajude.

    
por 07.07.2018 / 03:50
0

Esta macro converterá o número em tempo de acordo com o tempo de relógio de 24 horas na célula / célula selecionada.

Sub NumberToTime()
    Dim rCell As Range
    Dim iHours As Integer
    Dim iMins As Integer

    For Each rCell In Selection
        If IsNumeric(rCell.Value) And Len(rCell.Value) > 0 Then
            iHours = rCell.Value \ 100
            iMins = rCell.Value Mod 100
            rCell.Value = (iHours + iMins / 60) / 24
            rCell.NumberFormat = "h:mm AM/PM"
        End If
    Next
End Sub

Como funciona:

  • Insira essa macro como módulo com a planilha.
  • Insira a hora como o número mostrado na captura de tela.
  • Selecione o intervalo de dados & Execute a macro.

Você obtém os resultados desejados como mostrado na captura de tela.

    
por 08.07.2018 / 14:11