Koşullu Satırlar silme

hüseyintok

Altın Üye
Katılım
11 Mart 2020
Mesajlar
87
Altın Üyelik Bitiş Tarihi
11-03-2025
Merhaba I kolonunda eğer "0" değeri varsa bulunduğu satır ve üstündeki 4 satır silinmesi için makroya ihtiyacım var. yardımcı olurmusunuz
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,245
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.

C++:
Option Explicit

Sub Conditional_Delete_Rows()
    Dim Rng As Range, My_Area As Range
    
    For Each Rng In Range("I3:I" & Cells(Rows.Count, "I").End(3).Row)
        If Rng.Value = 0 And Len(Rng) > 0 Then
            If My_Area Is Nothing Then
                Set My_Area = Rng.Offset(-4).Resize(5)
            Else
                Set My_Area = Union(My_Area, Rng.Offset(-4).Resize(5))
            End If
        End If
    Next
    
    If Not My_Area Is Nothing Then
        My_Area.EntireRow.Delete
        MsgBox "Tespit edilen satırlar silinmiştir."
    Else
        MsgBox "Uygun veri bulunamadı!", vbExclamation
    End If
End Sub
 

hüseyintok

Altın Üye
Katılım
11 Mart 2020
Mesajlar
87
Altın Üyelik Bitiş Tarihi
11-03-2025
Korhan hocam çok teşekkürler. Tek sorun Sıfır olan satırlar silindikten sonra düzensiz satır boşlukları kalıyor aralarda. bunu halletmek mümkün mü?
 
Katılım
23 Haziran 2023
Mesajlar
57
Excel Vers. ve Dili
2013 TUR
Altın Üyelik Bitiş Tarihi
27-06-2024
Kritik olan 0'a gelince if içinde for döngüsüyle defalarca silmek.
Bir de boşlukların 0 sayılmaması

Sub satır4silodev()
Dim iCon As Long
Dim jCon As Long
Dim xVar As Long
jCon = ActiveCell.Column
For iCon = 50 To 1 Step -1
If Cells(iCon, jCon) <> "" And Cells(iCon, jCon) = 0 Then
For xVar = 5 To 1 Step -1
Rows(iCon).Delete
Next
End If
Next
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,245
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Merhaba I kolonunda eğer "0" değeri varsa bulunduğu satır ve üstündeki 4 sa
Talebinizde düzenin korunmasıyla ilgili bir açıklama göremedim. Talebinize göre cevabı verdiğimi düşünüyorum.

Düzen için aşağıdaki kodu deneyebilirsiniz. Örnek dosyanızda bloklar arasında 2 satır boşluk var. Fakat son blokta 3 satır boşluk var. Ben hepsinin 2 satır boşluklu olduğunu varsaydım.

C++:
Option Explicit

Sub Conditional_Delete_Rows()
    Dim Rng As Range, My_Area As Range
    
    For Each Rng In Range("I3:I" & Cells(Rows.Count, "I").End(3).Row)
        If Rng.Value = 0 And Len(Rng) > 0 Then
            If My_Area Is Nothing Then
                Set My_Area = Rng.Offset(-4).Resize(7)
            Else
                Set My_Area = Union(My_Area, Rng.Offset(-4).Resize(7))
            End If
        End If
    Next
    
    If Not My_Area Is Nothing Then
        My_Area.EntireRow.Delete
        MsgBox "Tespit edilen satırlar silinmiştir."
    Else
        MsgBox "Uygun veri bulunamadı!", vbExclamation
    End If
End Sub
 
Üst