• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Soru 2 sütunu karşılaştırıp aynı olan satırların silinmesi.

Katılım
16 Ağustos 2021
Mesajlar
16
Excel Vers. ve Dili
excel 2019
Merhaba Arkadaşlar 2 adet sütun var aynı sayfada biri h biride f kolunu bunlardaki her satırı karşılaştırıp sayısal değerler aynı olan satırların silinmesi gerekiyor, bu arada bu kolonlardaki satır sayısı değişken. Bunu nasıl yazabilirim makro olarak .
 
Merhaba,

Deneyiniz.
Kod:
Sub test()

    Dim d As Range, i As Long
    
    Application.ScreenUpdating = False
    
    For i = 1 To Cells(Rows.Count, "F").End(xlUp).Row
        If Cells(i, "F") <> "" Then
            If Cells(i, "F") = Cells(i, "H") Then
                If d Is Nothing Then
                    Set d = Rows(i)
                Else
                    Set d = Application.Union(d, Rows(i))
                End If
            End If
        End If
    Next i
    
    If Not d Is Nothing Then
        d.Delete
        MsgBox "Silindi."
    End If
    
    Application.ScreenUpdating = True

End Sub
 
Hata aldığınız örnek bir dosya ekler misiniz.


.
 
yok yazanların ve sayı olarak aynı olmayan satırların kalması gerekiyor.
 
Deneyiniz.
Kod:
Private Sub CommandButton1_Click()
    Dim d As Range, i As Long
    
    Application.ScreenUpdating = False
    
    For i = 1 To Cells(Rows.Count, "F").End(xlUp).Row
        If IsError(Cells(i, "F")) = False And IsError(Cells(i, "H")) = False Then
            If Cells(i, "F") = Cells(i, "H") Then
                If d Is Nothing Then
                    Set d = Rows(i)
                Else
                    Set d = Application.Union(d, Rows(i))
                End If
            End If
        End If
    Next i
    
    If Not d Is Nothing Then
        d.Delete
        MsgBox "Silindi."
    End If
    
    Application.ScreenUpdating = True
    
End Sub
 
burdaki
Set d = Rows(i)
Else
Set d = Application.Union(d, Rows(i)) şunların ne işe yaradığını açıklarmırmısınız.
bide satır silme işlemindeki kodu.
If Not d Is Nothing Then
d.Delete
 
For i döngüsüyle ve sonrasında if şartlarıyla bulmaya çalıştığımız Rows(i) ilgili şarta uyan satır(lar) demektir.
Biz bu şarta uyan satırları set yardımıyla "d" adında değişken tanımladık ve bu tanımladığımız değişkenleri union metodu ile bir diziye alarak ve son olarak bu dizideki satırları d.delete ile toplu halde sileriz.

If d Is Nothing Then ' d değiştekinde değer yoksa sadece, set ile d ye Rows(i) tanıtılır.
Set d = Rows(i)
Else ' değer varsa yani ilk şart oluşmuyorsa set ile d ye daha önce yazdırdığımız ilk d değişkeni ve yeni gelecek olan Rows(i) değerleri diziye alınarak tanıtılır(birleştirilir)
Set d = Application.Union(d, Rows(i))
End If

Aşağıda ise eğer tüm bu işlemlerinden sonunda d değişkeni değer varsa yani silinecek satır varsa d.delete ile d değişkenine aldığımız satırları toplu halde sil yazdık.
If Not d Is Nothing Then
d.Delete
end if

Biraz karışık yazmış olabilirim, kısaca bu şekilde açıklanabilir.
 
If IsError(Cells(i, "F")) = False And IsError(Cells(i, "H")) = False bu satırı tam anlayamadım.
 
Eğer "F" sütunundaki ilgili satır ve "H" sütunundaki ilgili satır hatalı değilse işleme devam et.
 
Geri
Üst