Vba: zeilen basierend auf kriterien in ein anderes blatt kopieren
Sie können die folgende Syntax in VBA verwenden, um jede Zeile in einem Blatt, die bestimmte Kriterien erfüllt, in ein anderes Blatt zu kopieren:
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
Dieses spezielle Makro kopiert jede Zeile von Sheet1 , wobei Spalte A „Mavs“ entspricht, und fügt jede dieser Zeilen in die nächsten verfügbaren Zeilen von Sheet2 ein.
Das folgende Beispiel zeigt, wie diese Syntax in der Praxis verwendet wird.
Beispiel: Kopieren Sie Zeilen basierend auf Kriterien mithilfe von VBA in ein anderes Blatt
Angenommen, wir haben in Blatt 1 den folgenden Datensatz, der Informationen über verschiedene Basketballspieler enthält:
Und nehmen wir an, wir haben den folgenden Datensatz in Sheet2 :
Beachten Sie, dass Tabelle 2 nur Daten zu Spielern des Warriors-Teams enthält.
Nehmen wir an, wir möchten jede Zeile aus Sheet1 kopieren, in der die Teamspalte Mavs entspricht, und jede dieser Zeilen in die nächsten verfügbaren Zeilen von Sheet2 einfügen.
Dazu können wir das folgende Makro erstellen:
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
Wenn wir dieses Makro ausführen, erhalten wir in Sheet2 die folgende Ausgabe:
Beachten Sie, dass jede Zeile in Sheet1 , in der der Teamname Mavs lautete, in die nächsten verfügbaren Zeilen in Sheet2 eingefügt wurde.
Hinweis : Die vollständige Dokumentation zur VBA- Copy- Methode finden Sie hier .
Zusätzliche Ressourcen
In den folgenden Tutorials wird erläutert, wie Sie andere häufige Aufgaben in VBA ausführen:
VBA: So finden Sie die zuletzt verwendete Zeile
VBA: So zählen Sie die Anzahl der Zeilen im Bereich
VBA: So zählen Sie die Anzahl der verwendeten Spalten