Inquiridor
Retornar itens marcados com # em texto

Pergunta
-
Amigos,
No Excel, preciso criar uma fórmula que retorne todos os itens marcados com # de uma célula específica.
Exemplo:
Celula A1 tem o texto"João e Maria foram a #feira comprar #abacate, mas esqueceram de #pegar o #troco"
O que a fórmula deve retornar:
#feita
#abacate
#pegar
#trocoAlguém pode me ajudar?
terça-feira, 7 de dezembro de 2010 21:32
Todas as Respostas
-
Esse é o típico caso em que uma macro função cai como uma luva.
A questão aí é .... o que delimita o fim da palavra ? Espaço ? vírgula ? ponto ? ponto e vírgula ? interrogação ? Exclamação ?
Como faria ?
algo assim
Function tira_tokens(texto As String, iniciador As String, terminador As String) As Variant
Dim temporario(100) As String
Dim letra, pedacinho As String
Dim i, quantos, tamamho As Double
Dim achou As Boolean
tamanho = Len(texto)
terminador = terminador & iniciador
quantos = 0
letra = ""
pedacinho = ""
achou = False
For i = 1 To tamanho
letra = Mid(texto, i, 1)
If achou Then
If InStr(1, terminador, letra) <> 0 Then
temporario(quantos) = pedacinho
pedacinho = ""
achou = False
quantos = quantos + 1
Elsepedacinho = pedacinho & letra
End If
Else
achou = (letra = iniciador)
End If
Next
If achou Then
quantos = quantos + 1
temporario(quantos) = pedacinho
End If
If Application.Caller.Rows.Count > 1 Then
tira_tokens = Application.Transpose(temporario)
Else
tira_tokens = temporario
End If
End Function
Como funciona ? essa função recebe 3 argumentoso primeiro argumento é o texto inteiro, o segundo argumento é o caracter que INICIA o token, no seu exemplo é "#"o terceiro argumento é uma string que contém os caracteres que TERMINAM o token, ou seja, o que termina uma palavra ? vírgula, ponto, espaço, / , sei lá o que vc quiser. O que vc quiser que termine a palavra vc taca aí .
Um detalhe importante. Essa função retorna uma LISTA de palavras, justamente as palavras encontradas depois do iniciador portanto essa função tem que ser chamada com uma fórmula matricial.
Reserve um espaço na sua planilha para o número máximo de palavras que a frase pode ter.
digite a fórmula assim
=tira_tokens( a1 ; "#" ; "., /!?;" )
em seguida, marque toda a faixa reservada para as palavras, tecle F2 e dë ctrl+shift+enter
Certifique-se que o número de células seja suficiente para o máximo de palavras marcadas que a frase conterá.
Para digitar essa função, tecle alt-f11 vá em Inserir, módulo e taque o código acima.
Vc já fez macro alguma vez ?E para que é isso ? é exercício de cursinho ou é aplicação na vida real ?
João Eurico Consultor Manguetown - Brazil- Sugerido como Resposta MANDRIX quarta-feira, 15 de dezembro de 2010 05:14
quarta-feira, 8 de dezembro de 2010 08:56 -
Mathtam (é um palíndromo, não??),
Como muitos usuários de excel não se sentem à vontade com as macros, rascunhei uma solução que talvez te atenda.
Na planilha em anexo observe que o texto deve ser colocado na célula em amarelo (incluí 4 exemplos para que vc veja...).
Existe, entretanto, uma condição--> ao final de cada palavra HÁ DE EXISTIR ou ESPAÇO (" "), ou VÍRGULA (","), ou PONTO e VÍRGULA (";") ou PONTO ("."), conforme reza nossa gramática.
Coloquei estes 4 mas outros podem ser incluídos (parênteses, hífen...) ainda que a norma preveja que deve haver 1 espaço entre o fim da palavra e qualquer um destes caracteres.
Experimente e me diga se atende.
Abs,
LINK-> http://rapidshare.com/files/437014584/RASCUNHOMATHTAMMSDN7DEZ2010.xlsx
quarta-feira, 15 de dezembro de 2010 05:28 -
Excelente planilha. Parabens.
João Eurico Consultor Manguetown - Brazilquarta-feira, 15 de dezembro de 2010 09:02 -
Grato.quarta-feira, 15 de dezembro de 2010 09:50
-
Show!
Felipe Costa Gualberto - http://www.ambienteoffice.com.brquarta-feira, 15 de dezembro de 2010 22:28