Preciso obter o horário do texto em uma célula do Excel. O Texto contém o número do ticket, o título do ticket, o registro de tempo e a porcentagem. Todos eles estão em uma única célula. Veja exemplo abaixo:
12345678: The bottom part is incorrect 0:15h 0%
Eu preciso pegar o 0:15
. Tentei usar a combinação de funções ESQUERDA e DIREITA, mas só funcionará se a porcentagem da última frase tiver apenas 1 dígito. A porcentagem varia de 0% a 100%. O comprimento do título do ticket também varia.
Responder1
eu uso de graçareg-ex substituir suplemento* que adiciona funcionalidade de expressão regular ao Excel, com isso você pode usar esta fórmula:
=RegExFind(A2,"\d{1,2}:\d{1,2}")
*
Não sou afiliado a esse suplemento
Responder2
A resposta de Máté Juhász é certamente a mais simples. No entanto, se você não deseja obter o complemento e não está familiarizado com regex (e não quer aprender), existe uma maneira mais complicada de obter o resultado usando funções integradas. Pode ser um pouco simplificado se você usar colunas auxiliares para evitar repetições. Vou usar isso para explicar como funciona.
Todas as “palavras” são separadas por espaços. O título do ticket pode ter vários números de palavras. O último elemento, a porcentagem, está após o último espaço, e o tempo está após o penúltimo espaço. A coluna B calcula a contagem de espaços com esta fórmula:
=LEN(A1)-LEN(SUBSTITUTE(A1," ",""))
Esta fórmula funciona eliminando todos os espaços e calculando quantos caracteres encurtaram a string. No exemplo, existem 7 espaços.
A coluna C descasca a ponta da corda começando com a hora. A fórmula é:
=MID(A1,FIND(CHAR(1),SUBSTITUTE(A1," ",CHAR(1),B1-1))+1,LEN(A1))
Isso funciona substituindo um caractere de destino arbitrário que não ocorre nos dados (CHAR(1) neste caso), pelo espaço antes do tempo (ou seja, próximo ao último espaço), usando o recurso SUBSTITUTE que permite especificar um instância específica a ser substituída. FIND então localiza a posição desse caractere e MID extrai o resto da string começando na próxima posição.
O resultado na Coluna D extrai o tempo com esta fórmula:
=LEFT(C1,FIND("h",C1)-1)
Funciona encontrando o “h” e extraindo tudo o que vem antes dele.
Você pode fazer isso em uma única fórmula sem usar colunas auxiliares. Se você substituir as referências de células auxiliares pelas fórmulas de células auxiliares, essa fórmula ficaria assim:
=LEFT(MID(A1,FIND(CHAR(1),SUBSTITUTE(A1," ",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1," ",""))-1))+1,LEN(A1)),FIND("h",MID(A1,FIND(CHAR(1),SUBSTITUTE(A1," ",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1," ",""))-1))+1,LEN(A1)))-1)
Observe que tudo isso pressupõe dados limpos, sem espaços à direita. Se espaços à direita forem uma possibilidade, envolva todas as referências a A1 com TRIM() ou corte A1 em uma coluna auxiliar e consulte-a para evitar repetição.
Responder3
Experimente a seguinte fórmula:
=TRIM(RIGHT(TRIM(LEFT(SUBSTITUTE(TRIM(E10);"h ";REPT(" ";99));99));5))