Fórmula do Excel: dividir texto e números -

Índice

Fórmula genérica

=MIN(FIND((0,1,2,3,4,5,6,7,8,9),A1&"0123456789"))

Resumo

Para separar texto e números, você pode usar uma fórmula baseada na função FIND, na função MIN e na função LEN com a função LEFT ou RIGHT, dependendo se você deseja extrair o texto ou o número. No exemplo mostrado, a fórmula em C5 é:

=MIN(FIND((0,1,2,3,4,5,6,7,8,9),B5&"0123456789"))

que retorna 7, a posição do número 3 na string "apples30".

Explicação

Visão geral

A fórmula parece complexa, mas a mecânica é bastante simples.

Como acontece com a maioria das fórmulas que dividem ou extraem texto, a chave é localizar a posição do que você está procurando. Depois de obter a posição, você pode usar outras funções para extrair o que precisa.

Nesse caso, estamos assumindo que os números e o texto são combinados e que o número aparece após o texto. A partir do texto original, que aparece em uma célula, você deseja dividir o texto e os números em células separadas, assim:

Original Texto Número
Maçãs 30 Maçãs 30
pêssegos24 pêssegos 24
laranjas 12 laranjas 12
pêssegos0 pêssegos 0

Conforme declarado acima, a chave neste caso é localizar a posição inicial do número, o que você pode fazer com uma fórmula como esta:

=MIN(FIND((0,1,2,3,4,5,6,7,8,9),A1&"0123456789"))

Assim que tiver a posição, para extrair apenas o texto, use:

=LEFT(A1,position-1)

E, para extrair apenas o número, use:

=RIGHT(A1,LEN(A1)-position+1)

Na primeira fórmula acima, estamos usando a função FIND para localizar a posição inicial do número. Para o find_text, estamos usando a constante de matriz (0,1,2,3,4,5,6,7,8,9), isso faz com que a função FIND execute uma pesquisa separada para cada valor na constante de matriz. Como a constante da matriz contém 10 números, o resultado será uma matriz com 10 valores. Por exemplo, se o texto original for "maçãs30", a matriz resultante será:

(8,10,11,7,13,14,15,16,17,18)

Cada número neste array representa a posição de um item na constante do array dentro do texto original.

A seguir, a função MIN retorna o menor valor da lista, que corresponde à posição do primeiro número que aparece no texto original. Em essência, a função FIND obtém todas as posições numéricas, e MIN nos dá a primeira posição numérica: observe que 7 é o menor valor na matriz, que corresponde à posição do número 3 no texto original.

Você pode estar se perguntando sobre a construção estranha de within_text na função find:

B5&"0123456789"

Esta parte da fórmula concatena todos os números possíveis de 0 a 9 com o texto original em B5. Infelizmente, FIND não retorna zero quando um valor não é encontrado, então esta é apenas uma maneira inteligente de evitar erros que podem ocorrer quando um número não é encontrado.

Neste exemplo, uma vez que estamos assumindo que o número sempre aparecerá em segundo lugar no texto original, ele funciona bem porque MIN força apenas o menor, ou primeira ocorrência, de um número a ser retornado. Enquanto um número aparecer no texto original, essa posição será retornada.

Se o texto original não contiver nenhum número, uma posição "falsa" igual ao comprimento do texto original + 1 será retornada. Com esta posição falsa, a fórmula ESQUERDA acima ainda retornará o texto e a fórmula DIREITA retornará uma string vazia ("").

Bons links

Fórmula de Rick Rothstein no Mr Excel

Artigos interessantes...