Como checar a posição de um caractere ou texto dentro de uma célula?

Na semana passada, trouxemos um exemplo de código de pedidos para explicar as funções que permitem extrair partes de um texto ou célula.

Acontece que, e você já deve saber, alguns códigos podem possuir sequências de caracteres de tamanho variável, geralmente delimitadas por um caractere de pontuação ou símbolo (“-“, “.”, “%”, “#”, “|” etc.). Veja alguns exemplos:

  • 275-BEBIDAS, 89-CALÇADOS, 8-CAMA MESA BANHO;
  • 400|CHEQUE|4X, 200|DINHEIRO|1X, 500|CARTÃO DE CRÉDITO|10X;

Para esses casos, não dá para simplesmente deixar fixas as posições de extração, pois em cada situação acima os termos do meio e das extremidades possuem quantidade de caracteres que variam.

Além desse tipo de aplicação, a função que apresentaremos também serve para você criar uma consulta rápida em uma coluna para que ela acuse se um determinado texto está contido em uma outra célula. Imagine que você precise saber quantos de seus clientes possuem a expressão SILVA na coluna Nome completo, por exemplo.

Bom, chegou a hora de conhecer como resolver essas situações em seu editor de planilhas.

Função PROCURAR(texto a procurar;texto onde procurar;[posição inicial])

A função PROCURAR() retorna a posição em que há a primeira ocorrência de um texto dentro de outro texto ou célula, a partir da posição inicial informada. A posição inicial é um argumento opcional (se não for informado, o padrão é 1) e serve para pular uma quantidade de caracteres da esquerda para a direita antes de retornar a ocorrência.

Se você sabe que no texto onde procurar há uma ocorrência do caractere “|” (pipe) entre as posições 3 e 5, pode definir que a posição inicial será 6. Assim, a função só retornará a próxima ocorrência do caractere “|” no texto a partir do 6º caractere:

  • PROCURAR(“|”;”bola|casa|quadrado”) retornará 5, pois a primeira ocorrência de “|” na sequência acontece no 5º caractere;
  • Porém, PROCURAR(“|”;”pá|apartamento|círculo”;6) retornará 15, pois, ignorando ocorrências anteriores ao 6º caractere do texto, a primeira ocorrência do “|” seria na 15ª posição.

A seguir, vamos mostrar exemplos de uso da função PROCURAR() em conjunto com as funções NÚM.CARACT()EXT.TEXTO() ou MEIO() etc. já postadas aqui no blog:

A B C
1 275-BEBIDAS =PROCURAR(“-“;A1) =ESQUERDA(A1;B1-1)
2 108-LEITE E DERIVADOS =PROCURAR(“-“;A2) =ESQUERDA(A2;B2-1)
3 89-CALÇADOS =PROCURAR(“-“;A3) =EXT.TEXTO(A3;1;B3-1)
4 8-CAMA, MESA, BANHO =PROCURAR(“-“;A4) =EXT.TEXTO(A4;1;B4-1)

Como resultado, você certamente encontrará o seguinte:

A B C
1 275-BEBIDAS 4 275
2 108-LEITE E DERIVADOS 4 108
3 89-CALÇADOS 3 89
4 8-CAMA, MESA, BANHO 2 8

Agora, mais alguns exemplos com o termos no meio e no final das sequências:

A B C
1 400|CHEQUE|4X =EXT.TEXTO( A1; 5; PROCURAR(“|”; A1; 5) -1) =EXT.TEXTO( A1; PROCURAR(“|”; A1; 5) -1; NÚM.CARACT(A1))
2 200|DINHEIRO|1X =EXT.TEXTO( A2; 5; PROCURAR(“|”; A2; 5) -1) =EXT.TEXTO( A2; PROCURAR(“|”; A2; 5) -1; NÚM.CARACT(A2))
3 500|CARTÃO DE CRÉDITO|10X =EXT.TEXTO(A3; 5; PROCURAR(“|”; A3; 5) -1) =EXT.TEXTO( A3; PROCURAR(“|”; A3; 5) -1; NÚM.CARACT(A3))

Resultado esperado:

A B C
1 400|CHEQUE|4X CHEQUE 4X
2 200|DINHEIRO|1X DINHEIRO 1X
3 500|CARTÃO DE CRÉDITO|10X CARTÃO DE CRÉDITO 10X

Por fim, o exemplo do teste de ocorrência de um termo no conteúdo de uma célula:

A B C
1 JOSÉ ANTONIO SILVA =PROCURAR(“SILVA”;A1) =SE(NÃO(ÉERRO(B1));1;0)
2 JOSÉ PAULO FERREIRA =PROCURAR(“SILVA”;A2) =SE(NÃO(ÉERRO(B2));1;0)
3 MARIA SILVA FERREIRA =PROCURAR(“SILVA”;A3) =SE(NÃO(ÉERRO(B3));1;0)

Perceba no resultado abaixo que as células que não possuem o termo procurado aparecem com a mensagem de erro #VALOR!. Podemos fazer um teste lógico simples, através das funções NÃO()ÉERRO() para atribuir 0 (zero) ou 1 (um) à Coluna C:

A B C
1 JOSÉ ANTONIO SILVA 14 1
2 JOSÉ PAULO FERREIRA #VALOR! 0
3 MARIA SILVA FERREIRA 7 1