Vba: satırları kriterlere göre başka bir sayfaya kopyalayın


Belirli kriterleri karşılayan bir sayfadaki her satırı başka bir sayfaya kopyalamak için VBA’da aşağıdaki sözdizimini kullanabilirsiniz:

 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

Bu özel makro, A sütununun “Mavs”e eşit olduğu Sayfa1’in her satırını kopyalayacak ve bu satırların her birini Sayfa2’nin sonraki kullanılabilir satırlarına yapıştıracaktır.

Aşağıdaki örnek, bu sözdiziminin pratikte nasıl kullanılacağını gösterir.

Örnek: VBA kullanarak satırları ölçütlere göre başka bir sayfaya kopyalama

Sayfa 1’de çeşitli basketbol oyuncuları hakkında bilgi içeren aşağıdaki veri kümesinin bulunduğunu varsayalım:

Ve Sayfa2’de aşağıdaki veri kümesine sahip olduğumuzu varsayalım:

Sayfa2’nin yalnızca Warriors takımı oyuncularına ilişkin verileri içerdiğini unutmayın.

Diyelim ki Team sütununun Mavs’e eşit olduğu Sheet1’deki her satırı kopyalamak ve bu satırların her birini Sheet2’nin sonraki kullanılabilir satırlarına yapıştırmak istediğimizi varsayalım.

Bunun için aşağıdaki makroyu oluşturabiliriz:

 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

Bu makroyu çalıştırdığımızda Sheet2’de aşağıdaki çıktıyı alıyoruz:

Takım adının Mavs’e eşit olduğu Sayfa1’deki her satırın Sayfa2’deki sonraki kullanılabilir satırlara yapıştırıldığını unutmayın.

Not : VBA Copy yöntemine ilişkin tüm belgeleri burada bulabilirsiniz.

Ek kaynaklar

Aşağıdaki eğitimlerde VBA’da diğer ortak görevlerin nasıl gerçekleştirileceği açıklanmaktadır:

VBA: Son kullanılan satırı nasıl bulabilirim?
VBA: Aralıktaki satır sayısı nasıl sayılır?
VBA: Kullanılan sütunların sayısı nasıl sayılır?

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir