Como converter um valor de texto não temporal no tempo adequado

1

Minha planilha tem valores de hora, conforme mostrado:
: 15
: 00: 23
: 47: 15

O Excel não os vê como valores de tempo reais, mas retorna seus valores como texto. Portanto, as funções matemáticas não funcionarão porque o Excel não as vê como números.
Como faço para converter esses valores em números adequados, e isso pode ser feito sem usar o VBA?

    
por OmniDo 23.04.2015 / 20:04

1 resposta

1

Um conjunto aninhado de instruções IF adequadamente construído deve lidar com isso:

Vejaafórmula:

=IF(LEFT(C7,1)=":",IF(ISERROR(FIND(":",C7,2)),TIMEVALUE("0:0"&C7),TIMEVALUE("0"&C7)),C7)

Como funciona:

  • A condicional externa, IF(LEFT(C7,1)=":",...) , aproveita o fato de que todos os valores malformados levam dois pontos.

    • Se o primeiro caractere não for dois-pontos, o valor será bom para ser informado como está: C7
    • Se o primeiro caractere for dois-pontos, o controle será passado para o condicional interno.
  • Como observado, o condicional interno, IF(ISERROR(FIND(":",C7,2),...) , é ativado apenas se um caractere de dois-pontos for encontrado como o primeiro caractere. Em seguida, ele tenta encontrar dois pontos no restante da string. Pelo comportamento do FIND função, se nenhum cólon for encontrado, um erro #VALUE! será retornado e detectado por ISERROR
  • Se FIND retornar um erro, os números de zero hora e de zero minuto devem ser incluídos na sequência: "0:0"&C7
  • Se FIND retornar um número, outros dois pontos estarão presentes e somente o número da hora zero deverá ser prefixado: "0"&C7
  • TIMEVALUE é usado em todos os casos para garantir que a string de valor de tempo seja realmente interpretada como um valor de tempo.
por 23.04.2015 / 20:36