Vba: skopiuj wiersze do innego arkusza na podstawie kryteriów


Możesz użyć następującej składni w VBA, aby skopiować każdy wiersz arkusza spełniający określone kryteria do innego arkusza:

 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

To konkretne makro skopiuje każdy wiersz z arkusza Sheet1 , w którym kolumna A jest równa „Mavs”, i wklei każdy z tych wierszy do kolejnych dostępnych wierszy arkusza Sheet2 .

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Przykład: Skopiuj wiersze do innego arkusza na podstawie kryteriów za pomocą VBA

Załóżmy, że w Arkuszu 1 mamy następujący zbiór danych, który zawiera informacje o różnych koszykarzach:

Załóżmy, że w Arkuszu 2 mamy następujący zestaw danych:

Należy pamiętać, że Arkusz 2 zawiera tylko dane dotyczące graczy drużyny Wojowników.

Załóżmy, że chcemy skopiować każdy wiersz z Arkusza 1 , w którym kolumna Zespół ma wartość Mavs, i wkleić każdy z tych wierszy do kolejnych dostępnych wierszy Arkusza 2 .

W tym celu możemy utworzyć następujące makro:

 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

Kiedy uruchomimy to makro, w Arkuszu 2 otrzymamy następujące dane wyjściowe:

Zauważ, że każdy wiersz w Arkuszu 1 , w którym nazwa zespołu była równa Mavs, został wklejony do kolejnych dostępnych wierszy w Arkuszu 2 .

Uwaga : Pełną dokumentację metody VBA Copy znajdziesz tutaj .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w VBA:

VBA: Jak znaleźć ostatnio używaną linię
VBA: Jak policzyć liczbę wierszy w zakresie
VBA: Jak policzyć liczbę użytych kolumn

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *