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?