locked
Retornar itens marcados com # em texto RRS feed

  • 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
    #troco

     

    Algué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

             Else

                    pedacinho = 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 argumentos
    o 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 - Brazil
    quarta-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.br
    quarta-feira, 15 de dezembro de 2010 22:28