Ir ao conteúdo

Macro para encontrar palavras de uma coluna no meio de textos em outra coluna.


Ir à solução Resolvido por edcronos,

Posts recomendados

Postado

Bom dia pessoal, Estou com um problema, preciso encontrar um nome de fornecedor no meio de um texto (em várias posições diferentes, o que impossibilita o uso das fórmulas: EXT.TEXTO, DIREITA e ESQUERDA) e em outra coluna... Tentei Localizar, mas como são vários fornecedores e diversas colunas de texto, o localizar só funciona se estiver na mesma linha, pensei no PROCV mas esse não busca no meio do texto, pensei numa macro, mas não consegui fazer =/, será que alguém pode me ajudar? POR FAVOR *-* Abaixo segue um exemplo:

Ampla s.a pago nesta data protel administadora

Cafeteria novo mundo vencido a pagar ampla s.a

Protel administradora pagamento realizado cafeteria novo mundo

Eu só quero saber quais são os textos que estão nas duas colunas... socorro!!!!!!

Postado

Pelo menos pra mim,  acho que ficou meio confuso a sua explicacao.

 

Veja se é isso:

voce que comparar a coluna A com a coluna C e verificar se na coluna C contem o termo igual do da coluna A em sua respectiva linha ?  

Postado

É quase isso, eu quero simplesmente encontrar o que tem na coluna A e na coluna C, mas eu preciso saber aonde está, eu estava no trabalho e não estava conseguindo mandar um exemplo decente, vou mandar agora...

Veja na coluna A tem o nome do fornecedor: " SABOR DE BEIJO ALIMENTOS LTDA", eu preciso saber se esse fornecedor aparece e aonde, ou seja, eu preciso da resposta: C5, e se tiver mais de uma vez, que me diga C5 e C10, por exemplo.

Se não tiver como me dizer aonde ele está, que pelo menos me diga quais valores se repetem, entendeu?

post-787460-0-96058300-1447194945_thumb.

Postado

brenda

dá para fazer isso facilmente com loop e a função like

mas como, e onde vai ficar o resultado?

é para mostrar o a celula onde está?

e é para mostrar o resultado em qual parte da planilha?

e se achar mais de um?

Postado

Eu posso inverter as  colunas e colocar a resposta ao lado da coluna C e se achar mais de uma palavra se tiver como a resposta pode ficar em outra coluna, por exemplo, achou na C5 e na C10, aí pode ficar a C5 na coluna D e a resposta C10 na coluna E, ou se você tiver uma dica mais prática, eu aceito. Na verdade as vezes eu acho que sempre tem um jeito mais fácil de fazer do que o jeito que eu pensei...

 

Obrigada!!!

Postado

não sei como tem a entrada de dados e nem como é o projeto no geral

mas o ideal mesmo seria ter os dados já com entradas separadas,

 

id. --- fornecedor ---endereço ---...

 

e assim se ter toda a informação já pronta para ser usada em qualquer situação sem precisar ficar adaptando

 

você pode ter um cadastro dos fornecedores com os quais trabalha com ID

 

um cadastro de mercadorias com o id dos fornecedores

e por aí vai

 

mas como não sei qual a origem dos dados e a sua real necessidade ou possibilidade de implementação...

 

----------------------------------------------------------------------------------------------------------------

 

você não precisa ter as duas informações na mesma aba

já que vai se duplicado acho que o melhor é deixar em abas separadas

  • Curtir 1
Postado

Bem que eu gostaria que ficasse em colunas separadas, mas a origem dos dados não é manual, na verdade os dados são importados por txt, acontece que eu estou fazendo uma planilha exatamente para facilitar o processo de seleção de dados. Eu importo um txt com esses dados do fornecedor, endereço e pagamento e comparo com uma base de dados dos fornecedores para encontrar quais são os fornecedores que foram pagos. Como os dados são de tamanhos variados, quando eu importo o txt eu prefiro deixar todos os dados em uma linha só, porque se eu separar aí mesmo que eu não encontro o que eu quero, o que eu preciso mesmo mesmo mesmo é separar o fornecedor e o valor que foi pago, mas nem sempre essas duas informações estão na mesma linha então eu estou indo por partes, primeiro estou me concentrando em separar o fornecedor e depois eu vejo como vou fazer para encontrar o valor, que eu acho que vai ser mais fácil.

Não tem jeito de já trazer as informações separadas, a única coisa que eu posso fazer é tentar separar com uma macro, entende?

Postado

ok então

então vamos começar

você não respondeu se pode ficar em abas separadas

 

primeiro, as palavras tem que ser exatamente iguais, espaço entre outras coisa

para tentar contornar o problema de não ser, se pode desmembrar a frase

para fazer um teste tipo

 

*CAFE*SEVERINO*

no caso do asterisco se pode ter qualquer coisa no lugar

Postado

Estou fazendo uma macro aqui

estou colocando para listar o nome do fornecedor ao lado do historico, vai fica mais rápido e você não vai ter duplicatas, podendo comparar direto com o banco atual de fornecedores ou algo assim

Sub busca()'Cells(linha, coluna)='Cells(l, 1) = Cells(linha, "A")    pLf = "Fornecedores"    ' aba de nomes    lif = 2    'linha inicial    lff = Sheets(pLf).Cells(Rows.Count, 1).End(xlUp).Row    pLh = "HISTORICO DE RECEBIMENTO"   'aba de busca    lih = 2    lfh = Sheets(pLh).Cells(Rows.Count, 1).End(xlUp).Row    ' varre o histico    For h = lih To lfh        ' pega o texto do historico        hov = Sheets(pLh).Cells(h, 1).Value2        'varre a lista de fornecedores        For f = lif To lff            'compara as duas listas            t = UCase(hov) Like "*" & UCase(Sheets(pLf).Cells(f, 1).Value2) & "*"                        If t Then                ' se coincidir cola nome do fornecedo do lado e pula para o proximo                Sheets(pLh).Cells(h, 2).Value2 = Sheets(pLf).Cells(f, 1).Value2                Exit For            End If        Next    NextEnd Sub

inicialmente ficou assim, o nome da aba tem que ser igual

  • Curtir 1
Postado

Não está rodando eu renomeei as duas abas e coloquei os " * " no histórico, mas quando eu executo a macro o depurador abre na seguinte linha:

 

 lff = Sheets(pLf).Cells(Rows.Count, 1).End(xlUp).Row

 

OBRIGADA PELA ATENÇÃO!!!

  • Solução
Postado

não é para colocar * no historico eu fiz isso na macro

e o nome da macro tem que está igual

aqui rodou


como teste coloque a aba1 como Fornecedores e cole os nomes de fornecedores na cola A essa que você colocou como exemplo

a aba 2 como HISTORICO DE RECEBIMENTO e cole o historico na coluna A


ou troque os nomes da abas na macro

pLf = "Fornecedores"

pLh = "HISTORICO DE RECEBIMENTO"

 

 

 

exemplo.rar

  • Curtir 1
Postado

@edcronos EU VOU TE DAR UM BEIJOOOOOOOOO!!!!!

 

MUITO OBRIGADA!!!!! <3333

 

FUNCIONOU PERFEITAMENTE...

 

*-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-*

 

Tô tão feliz!!!!!


Deixa eu te fazer uma pergunta? tem como o excel ler um valor no meio do texto e reconhecer que aquele valor é uma moeda? tipo... pago condomínio 22,01 no dia 15/10/2014. tem como ele reconhecer só o valor 22,01 como moeda?

Postado

tem

mas para isso vou ter que ter mais detalhes de como está o texto

e varios exemplos para identificar diferenças padrões


prepare um exemplo com mais detalhes com as posições corretas

s´não vou prometer para hoje nem amanha porque estou quebrando a cabeça com algo aqui

 

mas basicamente a macro vai correr o texto procurando numeros

 

algo como isso que eu fiz aqui

só que em C++ "estou tentando aprender"

 

http://forum.clubedohardware.com.br/forums/topic/1139109-char-qual-a-maneira-certa-de-usar/

de uma olhada no final

Postado

aquilo la não é vba, é C++

 

e é a minha linha de raciocínio que é enrolada para aprender, lá eu comecei com uma coisa e acabei em outra

ano passado quando comecei com o vba foi a mesma coisa

 

mas a respeito do novo problema, aconselho a abrir um novo topico

algo como "separar valor moeda de texto"

 

talvez alguem apareça com uma solução antes.

e colocar o link desse aqui junto

  • Curtir 1
Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...