Compartilhar via

Formata Hora

Anônima
2014-07-18T06:55:00+00:00

Gostaria de saber como poderia deixar fixo esse simbolo no Excel   :    pois quando eu informasse a hora digitaria desta maneira 1245 automaticamente após digitar os dois primeiros números iria aparecer dois pontos 12:45 e em seguida o restante do numero digitado, sem precisar recorrer ao teclado do note para colocar este simbolo.

12:45 para 12:45 aparecer automaticamente sem precisar apertar o shifit +: para ele poder aparecer os dois pontos.

Quem puder me ajudar agradeço

Microsoft 365 e Office | Excel | Para uso doméstico | Windows

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários

Resposta aceita pelo autor da pergunta

Anônima
2014-07-18T12:40:29+00:00

Olá John!

É possível alterar a formatação da célula para que ela apareça desta forma. Para isso clique com o botão direito sobre a célula ou intervalo desejado, vá em formatar células e escolha a opção personalizado. No campo "Tipo" digite:

00:00

Assim a visualização da sua célula ficará no formato descrito digitando somente os números. Entretanto, existe um grande problema neste tipo de formatação, pois estamos alterando apenas a forma como o número digitado será mostrado e não transformando ele para o formato de tempo. Portanto, se você possui células que dependem deste valor de tempo para realizar algum cálculo, o resultado sairá errado. Agora, se a célula é apenas para consulta, sem nenhuma fórmula dependente dela, é uma boa opção.

Se for necessário extrair o valor tempo desta célula neste padrão de formatação condicional, você precisará de uma fórmula que consiga entender o que foi digitado como tempo. Se você digitou, por exemplo, 1200, o valor mostrado na célula será 12:00, porém o valor dela continua sendo 1200. Se você digitar um número com 3 dígitos, ele vai mostrar no formato de tempo, mas o valor da célula continua sendo o digitado, por exemplo, se digitado 100, a célula mostrará 01:00, mas o valor continua sendo 100. Assim, para transformar este número em outra célula como valor de tempo, você pode utilizar a seguinte fórmula, supondo que o valor foi digita em A1:

=SE(NÚM.CARACT(A1)=3;VALOR(ESQUERDA(A1;1)&":"&DIREITA(A1;2));VALOR(ESQUERDA(A1;2)&":"&DIREITA(A1;2)))

Essa é a opção caso você queira trabalhar somente na planilha. Agora se você quiser uma solução mais avançada, podemos recorrer ao VBA e criar um código atrelado ao evento CHANGE da planilha de trabalho. Poderia ser o seguinte código:

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim i As Variant

    Dim celula As Variant

    celula = 1

    For Each i In Range("A1:A5")

        If Range("A" & celula).Value > 0 And IsNumeric(Range("A" & celula)) Then

            If Len(Range("A" & celula).Value) = 4 Then

                Range("A" & celula).Value = _

                Format(Left(Range("A" & celula), 2) & ":" & Right(Range("A" & celula), 2), "hh:mm")

            ElseIf Len(Range("A" & celula).Value) = 3 Then

                Range("A" & celula).Value = _

                Format(Left(Range("A" & celula), 1) & ":" & Right(Range("A" & celula), 2), "hh:mm")

            End If

            celula = celula + 1

        End If

        If Range("A" & celula).Value = Empty Then

            Range("A" & celula).NumberFormat = "General"

        End If

         celula = celula + 1

    Next i

End Sub

Se você não souber como utilizar o VBA, clique com o botão direito sobre o nome da sua planilha e vá em "Exibir Código". Copie e cole este código na tela de edição do código. Altere o intervalo "A1:A5" do código para o intervalo que você irá digitar as datas, feche e teste na sua planilha. Se resolver utilizar este método a sua planilha deve ser salva como .xlsm (Pasta de trabalho habilitada para macros do Excel).

Qualquer dúvida pergunte.

Abraços!

Esta resposta foi útil?

1 pessoa achou esta resposta útil.
0 comentários Sem comentários

Resposta aceita pelo autor da pergunta

Anônima
2014-07-18T18:08:48+00:00

Então John,

Copie e cole o código abaixo clicando no nome da guia e em Exibir código. O código funciona até a linha 1000. Caso não seja suficiente aumente o range "T7:T1000" e "U8:U1000".

Private Sub Worksheet_Change(ByVal Target As Range)

Call Hora_colunaT

Call Hora_colunaU

End Sub

Sub Hora_colunaT()

Application.EnableEvents = False

    Dim i As Variant

    Dim celula As Variant

    celula = 7

    For Each i In Range("T7:T1000")

        If Range("T" & celula).Value > 0 And IsNumeric(Range("T" & celula)) Then

            If Len(Range("T" & celula).Value) = 4 Then

                Range("T" & celula).Value = _

                Format(Left(Range("T" & celula), 2) & ":" & Right(Range("T" & celula), 2), "hh:mm")

            ElseIf Len(Range("T" & celula).Value) = 3 Then

                Range("T" & celula).Value = _

                Format(Left(Range("T" & celula), 1) & ":" & Right(Range("T" & celula), 2), "hh:mm")

            End If

            celula = celula + 1

            GoTo fim

        End If

        If Range("T" & celula).Value = Empty Then

            Range("T" & celula).NumberFormat = "General"

                 celula = celula + 1

                 GoTo fim

        End If

        celula = celula + 1

fim:

    Next i

Application.EnableEvents = True

End Sub

Sub Hora_colunaU()

Application.EnableEvents = False

    Dim i As Variant

    Dim celula As Variant

    celula = 8

    For Each i In Range("U8:U1000")

        If Range("U" & celula).Value > 0 And IsNumeric(Range("U" & celula)) Then

            If Len(Range("U" & celula).Value) = 4 Then

                Range("U" & celula).Value = _

                Format(Left(Range("U" & celula), 2) & ":" & Right(Range("U" & celula), 2), "hh:mm")

            ElseIf Len(Range("U" & celula).Value) = 3 Then

                Range("U" & celula).Value = _

                Format(Left(Range("U" & celula), 1) & ":" & Right(Range("U" & celula), 2), "hh:mm")

            End If

            celula = celula + 1

            GoTo fim

        End If

        If Range("U" & celula).Value = Empty Then

            Range("U" & celula).NumberFormat = "General"

                 celula = celula + 1

                 GoTo fim

        End If

        celula = celula + 1

fim:

    Next i

Application.EnableEvents = True

End Sub

Esta resposta foi útil?

0 comentários Sem comentários

1 resposta adicional

Classificar por: Mais útil
  1. Anônima
    2014-07-18T16:13:00+00:00

    Olá John!

    É possível alterar a formatação da célula para que ela apareça desta forma. Para isso clique com o botão direito sobre a célula ou intervalo desejado, vá em formatar células e escolha a opção personalizado. No campo "Tipo" digite:

    00:00

    Assim a visualização da sua célula ficará no formato descrito digitando somente os números. Entretanto, existe um grande problema neste tipo de formatação, pois estamos alterando apenas a forma como o número digitado será mostrado e não transformando ele para o formato de tempo. Portanto, se você possui células que dependem deste valor de tempo para realizar algum cálculo, o resultado sairá errado. Agora, se a célula é apenas para consulta, sem nenhuma fórmula dependente dela, é uma boa opção.

    Se for necessário extrair o valor tempo desta célula neste padrão de formatação condicional, você precisará de uma fórmula que consiga entender o que foi digitado como tempo. Se você digitou, por exemplo, 1200, o valor mostrado na célula será 12:00, porém o valor dela continua sendo 1200. Se você digitar um número com 3 dígitos, ele vai mostrar no formato de tempo, mas o valor da célula continua sendo o digitado, por exemplo, se digitado 100, a célula mostrará 01:00, mas o valor continua sendo 100. Assim, para transformar este número em outra célula como valor de tempo, você pode utilizar a seguinte fórmula, supondo que o valor foi digita em A1:

    =SE(NÚM.CARACT(A1)=3;VALOR(ESQUERDA(A1;1)&":"&DIREITA(A1;2));VALOR(ESQUERDA(A1;2)&":"&DIREITA(A1;2)))

    Essa é a opção caso você queira trabalhar somente na planilha. Agora se você quiser uma solução mais avançada, podemos recorrer ao VBA e criar um código atrelado ao evento CHANGE da planilha de trabalho. Poderia ser o seguinte código:

    Private Sub Worksheet_Change(ByVal Target As Range)

        Dim i As Variant

        Dim celula As Variant

        celula = 1

        For Each i In Range("A1:A5")

            If Range("A" & celula).Value > 0 And IsNumeric(Range("A" & celula)) Then

                If Len(Range("A" & celula).Value) = 4 Then

                    Range("A" & celula).Value = _

                    Format(Left(Range("A" & celula), 2) & ":" & Right(Range("A" & celula), 2), "hh:mm")

                ElseIf Len(Range("A" & celula).Value) = 3 Then

                    Range("A" & celula).Value = _

                    Format(Left(Range("A" & celula), 1) & ":" & Right(Range("A" & celula), 2), "hh:mm")

                End If

                celula = celula + 1

            End If

            If Range("A" & celula).Value = Empty Then

                Range("A" & celula).NumberFormat = "General"

            End If

             celula = celula + 1

        Next i

    End Sub

    Se você não souber como utilizar o VBA, clique com o botão direito sobre o nome da sua planilha e vá em "Exibir Código". Copie e cole este código na tela de edição do código. Altere o intervalo "A1:A5" do código para o intervalo que você irá digitar as datas, feche e teste na sua planilha. Se resolver utilizar este método a sua planilha deve ser salva como .xlsm (Pasta de trabalho habilitada para macros do Excel).

    Qualquer dúvida pergunte.

    Abraços!

    Foi de grande ajuda, só não consegui utilizar 

    =SE(NÚM.CARACT(A1)=3;VALOR(ESQUERDA(A1;1)&":"&DIREITA(A1;2));VALOR(ESQUERDA(A1;2)&":"&DIREITA(A1;2)))

    Gostaria de saber como implemento este código na minha planilha no caso seria no intervalo T7 para baixo que seria os horário inicial e no intervalo U8 para baixo seria o horário final na planilha, preciso trabalhar com os valores do tempo para que assim eu crie uma formula no V7 para calcular o tempo que ele levou para executar um determinado serviço.

    Desde já obrigado pela ajuda

    Esta resposta foi útil?

    0 comentários Sem comentários