Usuário com melhor resposta
comparar e copiar

Pergunta
-
Preciso da uma comando vba que faça comparação de números e copie seus valores.
O que realmente tenho é um arquivo teste.xls.
Dentro desse arquivo na plan1 coluna B tenho vários numero 254-1, 248-8, 658-7 e na plan2 também tenho essa mesma numeração (254-1, 248-8, 658-7 ) ou ate novos números que não encontra na plan1.
Assim que rodar o comando na plan1 coluna B tenho 254-1, 278-8 e na coluna F tenho o 658-7 entre outros números eles fará a comparação na plan2 e com os números 254-1 e o restante e assim achando o números iguais adicionara na plan1 na coluna C ou F os valores na frente de seus números, ele fará apenas a copia dos valores.
Não achando o numero teria q acrescentar no final da coluna B onde termina o texto o numero e valor. ( neste caso preciso do numero e valor) na plan1.
Respostas
-
Insisto em usar o PROCV, mas de qualquer forma, experimente o código abaixo:
Sub fMain() Dim lng As Long Dim wks As Worksheet Set wks = Worksheets("Plan1") With wks For lng = 6 To .Cells(.Rows.Count, "B").End(xlUp).Row .Cells(lng, "C") = Evaluate("=IFERROR(VLOOKUP(" _ & .Cells(lng, "B").Address _ & ",'Plan2'!B:C,2,0),"""")") Next lng For lng = 3 To .Cells(.Rows.Count, "F").End(xlUp).Row .Cells(lng, "G") = Evaluate("=IFERROR(VLOOKUP(" _ & .Cells(lng, "F").Address _ & ",'Plan2'!F:G,2,0),"""")") Next lng End With End Sub
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta vaggnersf terça-feira, 16 de abril de 2013 23:42
Todas as Respostas
-
-
Por que não faz um PROCV?
Na célula C1 de Plan1, digite:
=PROCV(B1;Plan2!B:B;1;0)
Copie e cole a fórmula para baixo.
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
ja uso o metodo em procv, mais acaba ficando muito lento, gostaria de poder usar em VBA -
O PROCV é mais rápido que qualquer operação em VBA. Experimente trabalhar no modo de cálculo manual.
De qualquer forma, tente algo como mostrado abaixo:
Sub fMain() Dim lng As Long Dim wks1 As Worksheet Dim wks2 As Worksheet Set wks1 = ThisWorkbook.Sheets("Plan1") Set wks2 = ThisWorkbook.Sheets("Plan2") With wks1 For lng = 1 To .Cells(.Rows.Count, "B").End(xlUp).Row If Not IsError(Application.Match _ (.Cells(lng, "B"), wks2.Columns("B"), 0)) Then .Cells(lng, "C") = "X" Else .Cells(lng, "C") = "" End If Next lng End With End Sub
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
-
-
Me desculpa por meu erro, postei a planilha errada.
Estou postando um novo link.
E tambem seu codigo rodou, mais nao puxou os valores. Por favor se puder ajudar.
Na planilha esta um exemplo e tambem o codigo.
Vlw
-
Insisto em usar o PROCV, mas de qualquer forma, experimente o código abaixo:
Sub fMain() Dim lng As Long Dim wks As Worksheet Set wks = Worksheets("Plan1") With wks For lng = 6 To .Cells(.Rows.Count, "B").End(xlUp).Row .Cells(lng, "C") = Evaluate("=IFERROR(VLOOKUP(" _ & .Cells(lng, "B").Address _ & ",'Plan2'!B:C,2,0),"""")") Next lng For lng = 3 To .Cells(.Rows.Count, "F").End(xlUp).Row .Cells(lng, "G") = Evaluate("=IFERROR(VLOOKUP(" _ & .Cells(lng, "F").Address _ & ",'Plan2'!F:G,2,0),"""")") Next lng End With End Sub
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta vaggnersf terça-feira, 16 de abril de 2013 23:42