Preciso extrair os últimos 7 valores numéricos (não caracteres) de uma string em uma célula do Excel. A string contém um nome de arquivo (que pode ser uma mistura de letras, números e um travessão) e depois 7 números que precisam ser movidos para outra coluna.
por exemploJohnson Set1- 0 0 1 14 9 54 0
Os valores numéricos variam de 0 a 999, portanto não é possível extrair apenas os últimos 7 caracteres.
Responder1
Portanto, existem alguns truques que você pode usar para conseguir o que deseja. Farei o meu melhor para explicá-los aqui e depois lhe darei uma fórmula que usa esses truques para dar o que você deseja.
A chave é encontrar o espaço antes do início da lista de números. Se o seu exemplo for geral o suficiente, este espaço será sempre o 7º espaço a partir da direita. O problema é que o 7º a partir da direita pode ser qualquer espaço numérico a partir da esquerda, porque parece que não há regras sobre o nome do arquivo ter um número definido de espaços. E a SUBSTITUTE
função permite especificar qual instância (da esquerda) de uma string substituir.
Para obter o 7º espaço à direita, temos que traduzi-lo em espaços à esquerda. Para fazer isso, precisamos saber o número de espaços em toda a string. Assim que tivermos isso, é apenas uma questão de subtração.
Para encontrar o número total de espaços na string, existe um truque usando as funções SUBSTITUTE
e . LEN
A ideia é substituir todos os espaços da string por nada e então comparar o comprimento da saída com o comprimento da string original. A diferença é, obviamente, o número de espaços na string original. Portanto, para uma string in A1
, o seguinte retornará o número de espaços:
=LEN(A1)-LEN(SUBSTITUTE(A1," ",""))
Portanto, a instância numérica do espaço à esquerda que você deseja sempre terá mais 6 espaços à sua esquerda.
=LEN(A1)-LEN(SUBSTITUTE(A1," ",""))-6
Agora, o próximo problema é que só SUBSTITUTE
permite especificar o número da instância que deseja alterar. FIND
, que seria mais conveniente para extrair os números, não possui esse recurso. O truque então é usar SUBSTITUTE
para gerar uma string que permita usar FIND
como quiser. Se você substituir o sétimo espaço da direita por uma string que não ocorre em nenhum outro lugar da string, você terá uma substring exclusiva para procurar. Então, por exemplo, você pode usar o seguinte para substituir o espaço desejado por "REPLACE!ME":
=SUBSTITUTE(A1," ","REPLACE!ME",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))-6)
Agora, basta encontrar o índice de "REPLACE!ME" na string e retornar tudo para a direita. Isso pode ser feito com as funções RIGHT
, LEN
e . FIND
A função final é meio repetitiva, mas dá conta do recado.
=RIGHT(SUBSTITUTE(A1," ","REPLACE!ME",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))-6),LEN(SUBSTITUTE(A1," ","REPLACE!ME",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))-6))-FIND("REPLACE!ME",SUBSTITUTE(A1," ","REPLACE!ME",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))-6))-LEN("REPLACE!ME")+1)