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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert