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 doFINDfunção, se nenhum cólon for encontrado, um erro#VALUE!será retornado e detectado porISERROR - Se
FINDretornar um erro, os números de zero hora e de zero minuto devem ser incluídos na sequência:"0:0"&C7 - Se
FINDretornar 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.