VBA Copiar / colar linha para outra planilha se a célula for maior que a célula em outra coluna

1

Novo no VBA e ficando confuso tentando descobrir vários comandos de uma só vez.

Eu quero comparar os valores na coluna K com os valores da coluna I, e se o valor na coluna K for maior, copie essa linha e cole-a na Planilha9 para ter uma lista de todas as instâncias em que K & gt ; Eu.

Isso é o que eu tenho:

    Sub compareresult()

Dim i As Integer

For i = 8 To 500
    If Cells(i, 11).Value > Cells(i, 9).Value Then
        ActiveCell.EntireRow.Select
        Selection.copy
        Sheets("Sheet9").range("A65000").End(xlUp).Offset(1, 1).PasteSpecial
    End If
Next i

End Sub

Neste momento, ele está me dando uma mensagem de erro 400, mas em um ponto durante minha troca, copiei e colei os valores um sobre o outro na Planilha9, para que ele só exibisse a hora final K > I. Alguma idéia?

    
por rontob452 13.07.2017 / 16:06

2 respostas

0

Examine isto:

Sub compareresult()

Dim i As Long, K As Long

K = 1
For i = 8 To 500
    If Cells(i, 11).Value > Cells(i, 9).Value Then
        Cells(i, 11).EntireRow.Copy Sheets("Sheet9").Range("A" & K)
        K = K + 1
    End If
Next i

End Sub

NOTAS:

  1. evitamos Selecionar
  2. copiamos / colamos em uma única instrução
  3. movemos a linha de destino uma linha por vez
por 13.07.2017 / 16:24
2

Bem-vindo ao superusuário.

Isso é bastante simples, tente usar o código abaixo. No entanto, certifique-se de substituir "sheet1" por qualquer folha numérica que seja sua fonte.

 Sub compareresult()

 Dim row1 As Integer
 Dim row2 As Integer

 row2 = 1
 For row1 = 8 To 500
     If sheet1.Cells(row1, 11).value > sheet1.Cells(row1, 9).value Then
         sheet1.Cells(row1, 1).EntireRow.Copy Sheets(11).Cells(row2, 1)
         row2 = row2 + 1
     End If
 Next row1

 End Sub

Coisas para perceber:

  1. Não usamos seleções ou ativações, o que é mais rápido.
  2. Copiamos e colamos em uma declaração, o que é mais rápido.
  3. Alteramos a linha de destino uma por vez, o que torna nosso código mais rápido.
  4. Nós nos movemos para as folhas de origem e de destino por número, o que é mais seguro.
  5. Usamos nomes de variáveis significativos, o que ajuda na legibilidade do nosso código.
por 13.07.2017 / 16:19