Notifications
Clear all

Pesquisar e comparar

4 Posts
3 Usuários
0 Reactions
1,270 Visualizações
 ti02
(@ti02)
Posts: 0
New Member
Topic starter
 

Olá amigos, Tenho um problema aqui que já pensei na lógica para resolver, mas não sei se é possível aplicar no vba o que eu estou em mente.

Suponhamos que eu tenho o seguinte na planBase que é o relatório

E tenho uma outra planilha, que é a planilha de calculos, planCalculos, onde eu defini que quero adicionar um valor a tudo que for do tipo, BANANA E MAÇA.

Então quero comparar se na celula A1 da planBase tem a palavra chave que coloquei na celula A1 de planCalculos. Aí que está o problema, não quero comparar todo texto de um com a outra, somente a primeira palavra.

no caso pensei em fazer o seguinte, porém não consigo aplicar isso no VBA, se alguém souber.

worksheets(PlanBase).select
range("A2").select

do
 With ThisWorkbook.Worksheets(planCalculos).Range(rng)
        Set c = .Find(left(ActiveCell.Offset(0, 0), lenOfxlValues), LookIn:=xlValues)

onde eu pesquisaria somente o tamanho da palavra que está correspondente na celula ativa da planCalculos.

Não sei se fui claro, mas é isso aí, se algu´rm souber como aplicar isso, ajudaria muito!.

 
Postado : 17/05/2017 8:37 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

ti02,

Boa tarde!

Alterei o título de sua mensagem pois, conforme as regras do fórum, títulos de mensagens não devem conter a palavra ajuda. Utilize apenas um Texto sucinto e que descreva a sua dúvida.

Nas próximas postagens de códigos aqui no fórum, por gentileza, queira utilizar a TAG CODE que existe no início da caixa de mensagens.

Quanto a sua dúvida, para fazer comparações pegando apenas parte do nome use o operador LIKE. Veja no help do VBA qe trás, inclusive exemplos de como utilizar o mesmo. Você pode utilizar o LIKE, inclusive, com coringas como o asterisco (*) e o ponto de interrogação (?).

 
Postado : 17/05/2017 9:03 am
 ti02
(@ti02)
Posts: 0
New Member
Topic starter
 

Olá Wagner, obrigado pelo retorno e desculpe pelas regras infligidas, me atentarei mais!

apliquei o que tinha em mente de fazer com o with, porém sem o with, já que com with não consegui, implementei essa lógica aí.
Ficou funcional, não sei se era o melhor caminho, pois dará o numero de tags em voltas na planilha Base, se houverem 200 tags, serão 200 voltas, se houverem 10k linhas na base, serão 200 x 10.000, acredito que posso perder em velocidade, mas se não houver outro jeito terá de ser assim. :/
Segue codigo para avaliação de quem quiser ter uma noção de algum problema parecido.

 Dim contador As Integer
    contador = 2
    Dim tamanhoPalavra As Integer
    
    Dim tamanhoDaBase As Integer
    
    tamanhoDaBase = Planilha5.Cells(Rows.Count, 1).End(xlUp).Row
    
    Do 'para enlaçar todas as tags
    Range("A2").Select
    tamanhoPalavra = Len(Sheets("Planilha1").Cells(contador, 1).Value)
    Do 'para enlaçar todas as cells da planilha base
    If Left(ActiveCell.Offset(0, 0).Value, tamanhoPalavra) = Sheets("Planilha1").Cells(contador, 1).Value Then
    ActiveCell.Offset(0, 1).Value = Sheets("Planilha1").Cells(contador, 2).Value
    End If
    ActiveCell.Offset(1, 0).Select
    
    Loop Until IsEmpty(ActiveCell)
    contador = contador + 1
    Loop Until contador > tamanhoDaBase
 
Postado : 17/05/2017 12:03 pm
(@brunoxro)
Posts: 0
New Member
 

Boa tarde ti02,

Se você alterar o código para retirar o .Select, você vai ter um ganho no desempenho.

Anexe uma planilha de exemplo, assim fica mais fácil tentar ajudar.

att,

 
Postado : 17/05/2017 12:29 pm