Vba: kopieer rijen naar een ander blad op basis van criteria
U kunt de volgende syntaxis in VBA gebruiken om elke rij in een blad die aan specifieke criteria voldoet, naar een ander blad te kopiëren:
Sub CopyToAnotherSheet()
Dim LastRow As Long
'Find last used row in a Column A of Sheet1
With Worksheets(" Sheet1 ")
LastRow = .Cells(.Rows.Count, " A ").End(xlUp).Row
End With
'Find first row where values should be posted in Sheet2
With Worksheets(" Sheet2 ")
j = .Cells(.Rows.Count, " A ").End(xlUp).Row + 1
End With
'Paste each row that contains "Mavs" in column A of Sheet1 into Sheet2
For i = 1 TB LastRow
With Worksheets(" Sheet1 ")
If .Cells(i, 1).Value = "Mavs" Then
.Rows(i).Copy Destination:=Worksheets(" Sheet2 ").Range(" A " & j)
j = j + 1
End If
End With
Next i
End Sub
Deze specifieke macro kopieert elke rij van Sheet1 waarbij kolom A gelijk is aan „Mavs“ en plakt elk van die rijen in de volgende beschikbare rijen van Sheet2 .
Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.
Voorbeeld: Kopieer rijen naar een ander blad op basis van criteria met behulp van VBA
Stel dat we de volgende gegevensset in Blad 1 hebben die informatie bevat over verschillende basketbalspelers:
En stel dat we de volgende gegevensset in Blad2 hebben:
Houd er rekening mee dat Sheet2 alleen gegevens bevat over Warriors-teamspelers.
Laten we zeggen dat we elke rij uit Blad1 willen kopiëren, waarbij de kolom Team gelijk is aan Mavs, en elk van deze rijen in de volgende beschikbare rijen van Blad2 willen plakken.
We kunnen hiervoor de volgende macro maken:
Sub CopyToAnotherSheet()
Dim LastRow As Long
'Find last used row in a Column A of Sheet1
With Worksheets(" Sheet1 ")
LastRow = .Cells(.Rows.Count, " A ").End(xlUp).Row
End With
'Find first row where values should be posted in Sheet2
With Worksheets(" Sheet2 ")
j = .Cells(.Rows.Count, " A ").End(xlUp).Row + 1
End With
'Paste each row that contains "Mavs" in column A of Sheet1 into Sheet2
For i = 1 TB LastRow
With Worksheets(" Sheet1 ")
If .Cells(i, 1).Value = "Mavs" Then
.Rows(i).Copy Destination:=Worksheets(" Sheet2 ").Range(" A " & j)
j = j + 1
End If
End With
Next i
End Sub
Wanneer we deze macro uitvoeren, ontvangen we de volgende uitvoer in Sheet2 :
Merk op dat elke rij in Sheet1 waar de teamnaam gelijk was aan Mavs, in de volgende beschikbare rijen in Sheet2 werd geplakt.
Opmerking : u kunt hier de volledige documentatie voor de VBA Copy- methode vinden.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in VBA kunt uitvoeren:
VBA: hoe u de laatst gebruikte regel kunt vinden
VBA: het aantal rijen binnen bereik tellen
VBA: het aantal gebruikte kolommen tellen