Anda di halaman 1dari 11

Extrair parte do texto de uma clula com valores sem formato definido

Escrito por: Reinaldo Coral


Compartilhe:

0 inShare
Imprimir

Outro dia recebi uma dvida de um leitor que dizia: Se o texto que se quer uma parte for um endereo do tipo: AL RIBEIRAO PRETO, 556, BELA VISTA, CEP 01331000 e queremos apenas o endereo at a segunda vrgula em uma listagem extensa de clientes. Como elaborar a funo? Ento. primeira devemos observar o seguinte: Para usarmos qualquer frmula que extraia os valores de um texto, precisamos informar tamanho do texto que queremos retornar e/ou a posio inicial no texto onde partir a extrao. Mas como ter essas infomaes se cada endereo ter um tamanho? No podemos dizer: retorne um texto com tamanho 20! Ou, extraia um texto a partir da posio 10! Pois esses dados sero variveis e diferentes a cada linha. Para solucionarmos a questo, devemos estabelecer algumas regras e definir frmulas que nos retornem as informaes referenciais de tamanho e posicionamento que necessitamos para a frmula de extrao de texto. Como fazer isso? Vejamos. Antes, leia este artigo sobre o assunto. Com base no exemplo recebido (AL RIBEIRAO PRETO, 556, BELA VISTA, CEP 01331000 ), vamos definir nossa regra de padronizao.

Todo endereo ser composto de Rua, Nmero, Bairro, CEP. Precisamos extrair apenas rua e nmero, portanto, o texto at a 2a. vrgula.

Sendo assim, j temos nosso padro: Extrair o texto at a segunda vrgula. Sugesto: (admita que o endereo completo esteja na clula A1) =ESQUERDA(A1;PROCURAR(,;A1;PROCURAR(,;A1)+1)-1) Explicando: 1. 2. O primeiro PROCURAR (PROCURAR(,;A1)+1) vai encontrar a posio da primeira vrgula e adicionar mais 1(uma) posio para iniciar a procura da 2a. vrgula. O segundo PROCURAR (PROCURAR(,;A1;PROCURAR(,;A1)+1)-1) encontra a posio da 2a. vrgula e subtrai 1(uma) posio, pois, o seu resultado ser informado como

tamanho da string na frmula ESQUERDA, ou seja, a vrgula no aparecer, por isso, diminui um caracter. 3. A frmula ESQUERDA utiliza o resultado da combinao das duas frmulas acima como parmetro do tamanho da cadeia de caracteres a retornar. A frmul sempre localizar a segunda vrgula no texto e retornar como tamanho do texto a ser extraido. Dessa maneira, no importa a quantidade de caracteres possua determinado endereo, pois a frmula sempre buscar o tamanho pela regra definida. A frmula poder retornar erro caso no consiga identificar as duas vrgulas. Voc pode tratar isso utilizando um SE e um ERROS. Veja como ficaria: =SE(ERROS(ESQUERDA(A1;PROCURAR(,;A1;PROCURAR(,;A1)+1)1));";ESQUERDA(A1;PROCURAR(,;A1;PROCURAR(,;A1)+1)-1)) Entenda que a regra voc que define. Neste exemplo, utilizamos o identificador vrgula, na posio 2. Voc pode usar outras regras, espaos, letras, pontos, primeira ocorrncia no texto ou outra qualquer. Fica livre. S adaptar a frmula para cada caso. Um Abrao

http://www.exceldoseujeito.com.br/2011/10/20/extrair-parte-do-texto-de-uma-celula-comvalores-sem-formato-definido/

Excel: Preciso de uma frmula para extrair apenas um texto de uma clula ao lado, algum sabe como?
Tenho uma coluna com clulas que contm textos tipo esses: "Enviado em: sexta-feira, 1 de fevereiro de 2008 12:46" "Enviado em: sbado, 26 de janeiro de 2008 03:28" Preciso extrair para a coluna ao lado apenas a parte que contm a data, ou seja, sem o "Enviado em: ". Alguem sabe como? preciso disso urgente.

Melhor resposta - Escolhida pelo autor da pergunta


vc precisa da seguinte frmula Suponha que em a1 esteja o texto a frmula fica =EXT.TEXTO(A1;localizar(":";a1;1)+1;50 Repetindo =EXT.TEXTO(A1; localizar(":";a1;1)+1; 50) tudo numa linha s experimente
5 anos atrs

Extrair Sequncia Numrica de Expresso Alfanumrica


Introduo Explicao -Descobrir Primeira Ocorrncia de um Nmero -Contar Quantidade de Nmeros da Sequncia Alfanumrica -Combinando os Parmetros da Frmula Inicial Referncias

Introduo
Suponha que voc tenha uma coluna com textos e, em cada um dos textos, aparea uma sequncia numrica. Seu objetivo extrair a sequncia numrica de cada uma das clulas na coluna ao lado:

Para o exemplo acima, a frmula em B1 : =1*EXT.TEXTO(A1;CORRESP(VERDADEIRO;NM(1*EXT.TEXTO(A1;LIN(IND IRETO("1:" & NM.CARACT(A1)));1));0); CONT.NM(1*EXT.TEXTO(A1;LIN(INDIRETO("1:" & NM.CARACT(A1)));1))) (frmula matricial) A diferena entre os dados na coluna C para os da B que na coluna B os resultados so tratados como nmero, logo, todos os zeros esquerda so eliminados. Na coluna C, o resultado tratado como texto e os zeros so preservados. A frmula na coluna C idntica da coluna B, exceto pelo fato de haver a multiplicao da frmula por 1 no incio atravs da expresso 1*: =EXT.TEXTO(A1;CORRESP(VERDADEIRO;NM(1*EXT.TEXTO(A1;LIN(INDIR ETO("1:" & NM.CARACT(A1)));1));0); CONT.NM(1*EXT.TEXTO(A1;LIN(INDIRETO("1:" & NM.CARACT(A1)));1))) (frmula matricial) As frmulas acima so matriciais e devem ser entradas com Ctrl+Shift+Enter. Para saber mais sobre frmulas matriciais, clique aqui.

Explicao
O funcionamento da frmula se baseia em procurar o primeiro nmero da sequncia, contar quantos nmeros se seguem aps essa ocorrncia e ento retornar essa sequncia com a frmula EXT.TEXTO. na forma =EXT.TEXTO(A1,nm_inicial,nm_caract)

Descobrir Primeira Ocorrncia de um Nmero


De acordo com o exposto na seo anterior, precisamos descobrir como extrair o parmetro nm_inicial. Suponha que temos na clula A1 o texto Fel012ipe. Se voc escrever em B1: =EXT.TEXTO(A1;LIN(1:9);1) ir armazenar num vetor os elementos F, e, l, 0, 1, 2, i, p, e. Tanto que se voc selecionar apenas o trechoEXT.TEXTO(A1;LIN(1:9);1) da frmula (isto , selecionar tudo menos o sinal de =):

e pressionar F9, calcular esse vetor e o mesmo ser mostrado pelo Excel:

(para saber mais sobre a tecla F9 para avaliar frmulas, clique aqui) Pressione CTRL+Z para voltar edio da frmula original. Nesse exemplo, ser iterado um (veja o ltimo parmetro da frmula EXT.TEXTO, que vale 1) caractere de Fel012ipe de 1 at 9. A razo por eu ter escolhido assim pelo fato da expresso Fel012ipe ter 9 caracteres. Para esse caso, se a expresso em A1 tivesse mais de 9 caracteres, o vetor mostraria apenas os 9 primeiros caracteres. No entanto, possvel ajustar a frmula para que ela sempre faa iterao por todo vetor, usando uma combinao de INDIRETO e NM.CARACT: Sabemos que o nmero total de caracteres da expresso em A1 usando a frmula =NM.CARACT(A1) O local na nossa frmula em que estabelecemos quantas letras h a expresso em LIN(1:9). Portanto, nosso objetivo mudar a referncia 1:9 para 1:(nmero de caracteres): =EXT.TEXTO(A1;LIN(1:NM.CARACT(A1));1) No entanto, essa frmula nos retornar um erro porque 1:NM.CARACT(A1) no reconhecido pelo Excel como uma referncia para a funo LIN. Para fazermos o Excel reconhecer essa expresso como um referncia, devemos utilizar a funo INDIRETO e colocar a expresso entre aspas (clique aqui se quiser saber mais sobre a funo INDIRETO): =EXT.TEXTO(A1;LIN(INDIRETO("1:"&NM.CARACT(A1)));1) Agora a frmula sempre vai iterar todas as letras da expresso. Vale ressaltar que essa frmula trata os caracteres como elementos de texto, tanto que na figura anterior vemos que os elementos esto entre aspas. Para considermos os elementos como nmeros, basta fazermos uma operao matemtica nos mesmos que o Excel retornar um erro ou um nmero. Modifique a frmula acima para incluir a operao 1* na frmula: =1*EXT.TEXTO(A1;LIN(INDIRETO("1:"&NM.CARACT(A1)));1) Essa frmula retornar #VALOR!. Isso ocorre porque o primeiro elemento do vetor resultante gera um erro porque no Excel quando tentamos multiplicar um nmero por uma letra, o resultado #VALOR! atribudo. No entanto, se selecionarmos toda frmula (com exceo do sinal de =) e pressionarmos F9, teremos:

{#VALOR!;#VALOR!;#VALOR!;0;1;2;#VALOR!;#VALOR!;#VALOR!} Observe que apenas os elementos que eram nmero no retornaram um erro. Todos os restantes retornaram #VALOR!. Para sabermos o que nmero e o que no nmero nesse vetor, usamos o auxlio da funo NM, que retorna VERDADEIROquando um elemento nmero e FALSO quando no : =NM(1*EXT.TEXTO(A1;LIN(INDIRETO("1:"&NM.CARACT(A1)));1)) Pressionando F9 no modo de edio da frmula vemos que:

{FALSO;FALSO;FALSO;VERDADEIRO;VERDADEIRO;VERDADEIRO;FALSO;FAL SO;FALSO} Por fim, utilizamos a funo CORRESP para descobrirmos qual a primeira ocorrncia em que um nmero aparece. CORRESP retorna o ndice (leia-se: posio) no vetor de um determinado valor. Ora, necessitamos encontrar o primeiro parmetro VERDADEIRO no vetor acima: =CORRESP(VERDADEIRO;NM(1*EXT.TEXTO(A1;LIN(INDIRETO("1:"&NM .CARACT(A1)));1));0) (frmula matricial) Entre essa frmula com CTRL+SHIFT+ENTER, pois ela uma frmula matricial (clique aqui se tiver dvidas sobre matrizes). O resultado ser, corretamente, 4. O 0 na frmula acima significa que queremos que retorne a correspondncia exata de VERDADEIRO. No se preocupe com esse parmetro. Dessa forma, o primeiro parmetro da frmula geral do incio da explicao (nm_inicial) foi retornado corretamente.

Contar Quantidade de Nmeros da Sequncia Alfanumrica


Conforme subseo anterior, a frmula =1*EXT.TEXTO(A1;LIN(INDIRETO("1:"&NM.CARACT(A1)));1) Nos fornece o vetor {#VALOR!;#VALOR!;#VALOR!;0;1;2;#VALOR!;#VALOR!;#VALOR!} Para contar a quantidade de nmeros ento, usamos auxlio da funo CONT.NM: =CONT.NM(1*EXT.TEXTO(A1;LIN(INDIRETO("1:"&NM.CARACT(A1)));1)) (frmula matricial) O resultado retornado ser, corretamente, 3.

Combinando os Parmetros da Frmula Inicial


Combinando os parmetros na frmula EXT.TEXTO: =EXT.TEXTO(A1,nm_inicial,nm_caract) , onde: nm_inicial CORRESP(VERDADEIRO;NM(1*EXT.TEXTO(A1;LIN(INDIRET O("1:"&NM.CARACT(A1)));1));0) nm_caract CONT.NM(1*EXT.TEXTO(A1;LIN(INDIRETO("1:"&NM.CARA CT(A1)));1)) =EXT.TEXTO(A1;CORRESP(VERDADEIRO;NM(1*EXT.TEXTO(A1;LIN(INDIR ETO("1:"&NM.CARACT(A1)));1));0); CONT.NM(1*EXT.TEXTO(A1;LIN(INDIRETO("1:"&NM.CARACT(A1)));1))) (frmula matricial) A frmula retornar, corretamente, 012. A frmula acima no exclui os zeros esquerda porque a mesma retorna um texto. Se quiser converter o resultado em um nmero e, portanto, remover todos os zeros esquerda da frmula, faa uma operao matemtica no resultado sem alterar seu resultado, como multiplicar por 1: =1*EXT.TEXTO(A1;CORRESP(VERDADEIRO;NM(1*EXT.TEXTO(A1;LIN(IND IRETO("1:"&NM.CARACT(A1)));1));0); CONT.NM(1*EXT.TEXTO(A1;LIN(INDIRETO("1:"&NM.CARACT(A1)));1))) (frmula matricial) O resultado ser, corretamente, 12.

Referncias
Ashish Mathur: http://office.microsoft.com/en-us/excel-help/extractingnumbers-from-alphanumeric-strings-HA001154901.aspx Para fazer o download de um exemplo (Pasta de Trabalho), clique aqui.

Excel - Frmula SE?? Oi pessoal, Tenho uma planilha onde o resultado de uma clula o seguinte SE(H11="Other";"Justificativa";"") porm eu precisaria que o teste lgico fosse aplicado a um intervalo, ou seja, a palavra "Justificativa" aparecesse se a palavra "Other" fosse indicada em uma ou mais de uma clula no intervalo H8:H35. D pra fazer com Se ou tem que ser feito no VB (se for VB como o cdigo)?
15-03-2007 por asolivei

D para fazer usando uma frmula matricial... Ela fica assim: =SE(SOMA(SE(H8:H35="other";1;""))<>0;"Justificativ a";"") Detalhe, aps escrever a frmula, ao invs de pressionar Enter, pressione Ctrl+Shift+Enter... Neste caso a frmula ficar assim: {=SE(SOMA(SE(H8:H35="other";1;""))<>0;"Justificati va";"")} As chaves no podem ser inseridas manualmente, preciso pressionar Ctrl+shift+enter
15-03-2007 por Zealot.CJr

Vc pode usar a funo cont.se, por exemplo: =se(cont.se(H1:H11;"Other");"Justificativa";"") Explicando se no intervalo de H1 at H11 tiver uma ou mais clulas igual a "Other" o resultado ser "Justificativa" caso contrrio ficar em branco.
Citao:

Postado Originalmente por asolivei D para fazer usando uma frmula matricial... Ela fica assim: =SE(SOMA(SE(H8:H35"other";1;""))<>0;"Justificativa ";"") Detalhe, aps escrever a frmula, ao invs de pressionar Enter, pressione Ctrl+Shift+Enter... Neste caso a frmula ficar assim: {=SE(SOMA(SE(H8:H35"other";1;""))<>0;"Justificativ a";"")} As chaves no podem ser inseridas manualmente, preciso pressionar Ctrl+shift+enter

Asolivei, eu no manjo de frmula matricial, vc poderia explicar +/- com ela funciona nesse caso, desde j obrigado.
15-03-2007 por asolivei Citao:

Postado Originalmente por Zealot.CJr Asolivei, eu no manjo de frmula matricial, vc poderia explicar +/- com ela funciona nesse caso, desde j obrigado. A frmula matricial neste exemplo funciona como o conta.se, mas ela pode ser adaptada para diversas outras funes onde o cont.se ou outra funo no funcionaria. O que ela est fazendo o seguinte: =SE(SOMA(SE(H8:H35="other";1;""))<>0;"Justificativ a ";"") O primeiro SE a condio que vai dar o resultado como "Justificativa" ou "" A funo SOMA usada para criar a condio, ou seja, se dentro do segundo SE for encontrado "other" no intervalo informado, a condio atribui 1, caso contrrio, "". O interessante que a formula ir atribuir 1 para todos os "Other" encontrados. A lgica ento , se o resultado da soma for diferente de zero, significa que existe "other" no intervalo, o resto simples, atribui o valor que quiser no primeiro SE. Seria muito simples indicar o conta.se, mas como eu gosto muito das formulas matriciais, gosto de indicar o seu uso para que mais pessoas se interessem por ela. Por exemplo, a formula de soma condicional uma formula matricial, mas no temos uma formula para mdia condicional, etc...Ento, entendendo um pouquinho como ela funciona voc pode usar para fazer mdias, contar nomes em uma lista, etc

Vou anexar um arquivo com trs exemplos do que possvel fazer com uma frmula matricial. Usando a imaginao e entendendo como se usa este tipo de frmula, d pra fazer muita coisa boa !
15-03-2007 por Zealot.CJr

Nesse exemplo que vc montou a frmula matricial est atuando como o cont.se e a somase, certo? Humm, interessante, pelo que entendi a frmula matricial analisa individualmente todos os intervalos de uma matriz, vai ser muito til quando for necessrio usar a funo se em um intervalo, este era um dos problemas que eu tinha! Obrigado pela dica. Outra coisa, o operador & serve para calcular na mesma clula mais de uma frmula?
15-03-2007 por asolivei Citao:

Postado Originalmente por Zealot.CJr Nesse exemplo que vc montou a frmula matricial est atuando como o cont.se e a somase, certo?

Humm, interessante, pelo que entendi a frmula matricial analisa individualmente todos os intervalos de uma matriz, vai ser muito til quando for necessrio usar a funo se em um intervalo, este era um dos problemas que eu tinha! Obrigado pela dica. Outra coisa, o operador & serve para calcular na mesma clula mais de uma frmula? Sim, a formula combinou o somase e countase. E sim, eu usei & para colocar duas formulas em uma mesma clula ao invs de quebrar a cabea para montar uma frmula s.
15-03-2007 por Zealot.CJr Citao:

Postado Originalmente por asolivei Sim, a formula combinou o somase e countase. E sim, eu usei & para colocar duas formulas em uma mesma clula ao invs de quebrar a cabea para montar uma frmula s. Vamos ver se estou entendendo, no exemplo 3 vc poderia colocar essas formuletas, certo? {=MDIA(SE(DIA.DA.SEMANA(1+(A2:A20))<=2;B2:B20))} {=MDIA(SE(DIA.DA.SEMANA(A2:A20)>1;SE(DIA.DA.SEMAN A(A2:A20)<7;B2:B20)))} Que tambm daria certo. Cara, o melhor exemplo do emprego das formulas matriciais com certeza o exemplo 1, ja tive problema como aquele e quebrei a cabea para resolver, Valeu.
18-08-2007 por rwilton55

Teste lgico com tres verdades Estou com uma planilha que tem a coluna A4,f4 e h4 em outra coluna tenho que saber se a4 = "Sada", F4 diferente de "dinheiro" e h 4 = "Sim" ento repete o valor da coluna N4. se um dos item no for verdade acrecenta 0 No sei como fazer o teste tendo mais de um item pra verificar Se alguem puder me ajudar agradeo
19-08-2007 por luizn

Tenta assim: =SE(E(A4="Sada";F4<>"dinheiro";H4="Sim");N4;0)


11-09-2007 por seirafe

Ol, gostaria uma ajudinha... tenho uma coluna referente aos dias do mes. Ex: do B5 a B35. Cada clula eu deixo em branco para eu colocar as datas, pq posso ter vrias provas (sou atleta)num mesmo dia. (ex: se fiz 3 provas dia 1, B5-1, B6-1, B7-1. Ento B5 o dia. Na coluna N5 a N35 eu deixo em branco, e coloco a minha modalidade que eu fiz no dia.. Do C5 a M5 minha colocao, de 1 11 respectivamente. De 1 a 4 eu estou na faixa de premiao. Do 5 ao 11 no. Ento criei o seguinte clculo: =(CONT.VALORES(C5:M35)-CONT.VALORES(G5:M35))/CONT.VALORES(C5:M35) isso me d um clculo em porcentagem das vezes q cheguei na premiao no ms, s q geral, de todas as modalidades. S q agora q eu empaco: Gostaria de fazer uma mdia do ms, em porcentagem,

de cada dia (B5 a B35) e em cada modalidade - N5 a N35 (so 11:-corrida, natao, bicicleta, salto...etc etc) das vezes em que eu figurei na premiao. Como eu fao para associar modalidade, dia, figurao na premiao ? Se algum puder me ajudar eu agradeo. Obrigado !

http://www.expresstraining.com.br/index.php?page=article&id=298

Anda mungkin juga menyukai