Boş hücreleri silme sorunu

Katılım
23 Nisan 2011
Mesajlar
283
Excel Vers. ve Dili
Excel 2010 - Türkçe
Altın Üyelik Bitiş Tarihi
02.01.2019
Merhabalar, bir dosyanın boş satırlarını makroyla silmek istiyorum ama şu kodu yazdığımda hepsini silmiyor.
Kod:
Sub sil()
For i = 1 To [a1048576].End(xlUp).Row
If Cells(i, 1) = "" Then
Rows(i & ":" & i).Select
Selection.Delete Shift = xlUp
End If
Next
End Sub
Bunun nedeni hakkında bilgilendirebilirseniz çok sevinirim.
Örnek niteliğinde bir dosya ektedir.
 

Ekli dosyalar

Katılım
29 Nisan 2010
Mesajlar
133
Excel Vers. ve Dili
EXCEL 2010 - TÜRKÇE
Merhaba,
Sizin gönderdiğiniz kodlar A sütunuda bulduğu boş hücrenin ait olduğu tüm satırı siler, aynı satırın B veya diğer sütunlarındaki veriler de silinir.
Yapmak istediğiniz her sütundaki boş hücreleri silmek ise aşağıdaki kodları deneyin.
Kod:
Sub sil()
Application.ScreenUpdating = False
For y = 1 To 5
  For i = 1 To Cells(1048576, y).End(3).Row
   For x = 1 To Cells(1048576, y).End(3).Row
    Cells(x, y).Select
    If Cells(x, y) = "" Then Selection.Delete Shift:=xlUp
   Next
  Next
Next
End Sub
Bu kodlar A sütunundan E sütunu da dahil olmak üzere tüm boş hücreleri siler.
Daha fazla sütundaki boş hücreleri silmek için
Kod:
For y = 1 To 5
satırındaki 5 rakamını artırmalısınız.
Kolay gelsin...
 
Son düzenleme:
Katılım
29 Nisan 2010
Mesajlar
133
Excel Vers. ve Dili
EXCEL 2010 - TÜRKÇE
Sizin kodlarda bazı satırları silmemesinin sebebi;
Boş bir satırı sildiğinde altındaki boş satırın satır numarasının değişmesinden kaynaklanmaktadır.
Bunun için aşağıdaki gibi bir döngü daha kurmalısınız.
Kod:
Sub sil()
For x = 1 To [A1048576].End(3).Row
 For i = 1 To [A1048576].End(3).Row
   If Cells(i, 1) = "" Or Cells(i, 1) = " " Then
    Rows(i & ":" & i).Select
    Selection.Delete Shift = xlUp
   End If
 Next
Next
End Sub
İyi çalışmalar.
 
Son düzenleme:

Korhan Ayhan

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

Satır silme işlemlerinde döngüleri tersten başlatmalısınız. Satırlar silindiğinde bir alt satır yukarı kaydığı için yukarı kayan satır kontrol dışı kalıyor. Çünkü kurduğunuz döngü artarak değerleri kontrol ediyor. Döngüyü tersten başlattığınızda bu durum ortadan kalkar ve sorun çözülmüş olur.

Aşağıdaki satırı;
Kod:
For i = 1 To [a1048576].End(xlUp).Row
Bununla değiştirip deneyin;
Kod:
For i = [a1048576].End(xlUp).Row To 1 Step -1
Farklı alternatifler üretilebilir fakat silme işlemlerinde aşağıdaki kodları kullanabilirsiniz.

1. kod az satırlı verilerde sağlıklı sonuçlar vermektedir. Satır sayınız 10.000 lerin üzerinde ise 2. kodu kullanmanız daha sağlıklı olacaktır.

Kod-1;
Kod:
Sub SİL()
    On Error Resume Next
    Range("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
Kod-2;
Kod:
Sub SİL()
    Dim Zaman As Double, X As Long, Alan As Range
    
    Zaman = Timer
    
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    
10  For X = Cells(Rows.Count, 1).End(3).Row To 1 Step -1
        If Cells(X, 1) = "" Then
            If Alan Is Nothing Then
                Set Alan = Cells(X, 1)
            Else
                Set Alan = Union(Alan, Cells(X, 1))
            End If
        End If
        
        If X = 1 Or X Mod 512 = 0 Then
            If Not Alan Is Nothing Then
                Alan.EntireRow.Delete
                Set Alan = Nothing
                GoTo 10
            End If
        End If
    Next
    
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
    
    MsgBox "İşleminiz tamamlanmıştır." & Chr(10) & Chr(10) & _
           "İşlem süresi ; " & Format((Timer - Zaman) / 86400, "hh:mm:ss")
End Sub
 

Seyit Tiken

Uzman
Uzman
Katılım
23 Ağustos 2005
Mesajlar
4,651
Excel Vers. ve Dili
Excel : 2010
Bizde bir alternatif sunuyoruz, boş satırları siler.
Kod:
[a1:a500].SpecialCells(4).Delete 2
 
Katılım
23 Nisan 2011
Mesajlar
283
Excel Vers. ve Dili
Excel 2010 - Türkçe
Altın Üyelik Bitiş Tarihi
02.01.2019
Sn. İsmailCen, Korhan Ayhan, Seyit Tiken çok güzel bilgiler vermişsiniz, çok çok teşekkür ediyorum, emeklerinize sağlık. Ben de satır numaralarının değiştiğini fark etmiştim ama bunun sorun çıkarmasını beklemiyordum açıkçası.
Bir de Seyit Tiken'in yazdığı kodla ilgili ufak bir sorum olacaktı, kodda 4 ile 2'nin manası nedir?
 

Seyit Tiken

Uzman
Uzman
Katılım
23 Ağustos 2005
Mesajlar
4,651
Excel Vers. ve Dili
Excel : 2010
Sayın Monelog, bunun mantığını anlamak için Makro Kaydet yöntemine başvurmak lazım. Makro olaylarının beli bir sırası var, bu sıra, kelime olarak gösteriliyor, kodu biraz daha kısa göstermek babında ilgili yere rakam kullanılıyor, her olayda bu olmuyor.
 
Katılım
23 Nisan 2011
Mesajlar
283
Excel Vers. ve Dili
Excel 2010 - Türkçe
Altın Üyelik Bitiş Tarihi
02.01.2019
Cevabınız için çok teşekkür ediyorum Sn. Seyit Tiken...
 
Üst