Função do Excel para remover as últimas duas palavras de uma célula

1

Using operators for simple arithmetic 4m 44s

creating new database 3m 2s

Estes são os dois valores em duas células do Excel.

Eu quero remover as últimas duas palavras, ou seja, 4m 44s de cada célula, para que a saída seja:

Using operators for simple arithmetic

creating new database

=LEFT(A1,FIND(CHAR(1),SUBSTITUTE(A1," ",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1," ",""))-1)))

mas esta função está removendo apenas a última palavra. Como faço para remover as duas últimas palavras de cada célula?

    
por minefield 28.08.2012 / 06:48

2 respostas

1

Aqui está uma fórmula que fará isso. É um pouco longo, mas vai fazer o truque:

=LEFT(A1,FIND("@@REPLACE@@",SUBSTITUTE(TRIM(A1)," ","@@REPLACE@@",LEN(TRIM(A1))-LEN(SUBSTITUTE(TRIM(A1)," ",""))-1))-1)

A fórmula funciona usando a função SUBSTITUTE para substituir o penúltimo espaço por algum texto de substituição obscuro que provavelmente não será encontrado em nenhum outro lugar do texto ("@@ REPLACE @@" no exemplo). Em seguida, a função LEFT pode retornar tudo à esquerda do texto de substituição. A razão para fazer isso é porque FIND não permite que você especifique uma instância de um espaço, mas sim uma posição inicial, o que não é útil neste caso. No entanto, SUBSTITUTE permite especificar o número da instância do espaço, por isso é usado.

Espere que um erro seja retornado para o texto com duas ou menos palavras.

    
por 28.08.2012 / 15:28
1

Provavelmente você tem um espaço no texto porque, como Excellll diz, deve funcionar de outra forma. Tente adicionar em algumas funções TRIM para remover espaços à direita ( TRIM também removerá os espaços iniciais e tornará os espaços internos duplos em espaços simples ... mas presumo que isso não será um problema)

=LEFT(TRIM(A1),FIND(CHAR(1),SUBSTITUTE(TRIM(A1)," ",CHAR(1),LEN(TRIM(A1))-LEN(SUBSTITUTE(TRIM(A1)," ",""))-1)))

ou aqui está outro caminho (mais curto),

=TRIM(LEFT(A1,FIND(TRIM(RIGHT(SUBSTITUTE(TRIM(A1)," ",REPT(" ",9)),18)),A1)-1))

    
por 28.08.2012 / 20:01