none
comparar e copiar RRS feed

  • 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.

    terça-feira, 9 de abril de 2013 14:19

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
    terça-feira, 16 de abril de 2013 00:54
    Moderador

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

    quarta-feira, 10 de abril de 2013 00:06
    Moderador
  • 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
    quarta-feira, 10 de abril de 2013 00:54
  • 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

    quarta-feira, 10 de abril de 2013 01:39
    Moderador
  • Vagner,

    Não entendi: sua postagem inicial e a planilha mostram coisas diferentes. Estou confuso.

    O que é para acontecer como resultado final na planilha que você mandou o link?


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    sábado, 13 de abril de 2013 19:56
    Moderador
  • 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

    http://www.sendspace.com/file/igzqys

    domingo, 14 de abril de 2013 03:06
  • 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
    terça-feira, 16 de abril de 2013 00:54
    Moderador