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.
- Se o primeiro caractere não for dois-pontos, o valor será bom para ser informado como está:
- 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 doFIND
função, se nenhum cólon for encontrado, um erro#VALUE!
será retornado e detectado porISERROR
- 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.