Tabloda Boş Olan Satırları Gizleme

Katılım
8 Aralık 2023
Mesajlar
8
Excel Vers. ve Dili
Excel 365 / Türkçe
Merhaba arkadaşlar,

Elimde a2 ile e524 hücreleri arasında oluşan bir tablo var. Benim istediğim C,D, ve E sütunlarında boş olan hücreleri gizlemek. Ama bunu yaparken C2' değer var ama D2 ve E2 boş ise o zaman o satır gizlenmeyecek ya da D52 de değer var ama C52 ve E52 boş ise yine gizlenmeyecek. Buna göre bir makro var mı? Makro olmadan yapılabilir mi emin değilim. İnternette bir kaç tane makro buldum ama hepsi bütün satırı gizliyor. Makro konusunda da çok az bilgim var. O yüzden sizlere sormak istedim. Şimdiden teşekkürler...

Not: Örnek dosyayı ekledim. Birde ben Excel 365 kullanıyorum ama bunu kullanacak arkadaşın Excel'i eski sürüm büyük ihtimalle. Tam olarak bilmiyorum maalesef.
 
Katılım
9 Şubat 2022
Mesajlar
203
Excel Vers. ve Dili
Office 2021 Türkçe (x64)
Altın Üyelik Bitiş Tarihi
09-02-2027
İstediğiniz şey şu: A ve B sütunu hariç, satır tamamen boşsa o satır gizlenecek, herhangi bir sutun dolu ise gizlenmeyecek.
Bunu basitçe filtreleyerek halledebilirsiniz, dönüş yapacağım.
 
Son düzenleme:
Katılım
8 Aralık 2023
Mesajlar
8
Excel Vers. ve Dili
Excel 365 / Türkçe
İstediğiniz şey şu: A ve B sütunu hariç, satır tamamen boşsa o satır gizlenecek, herhangi bir sutun dolu ise gizlenmeyecek.
Bunu basitçe filtreleyerek halledebilirsiniz, dönüş yapacağım.
Evet bunu istiyorum ama filtreleme yaptığımda bütün satırı siliyor. C'de boş hücre olduğu sürece D ve E' de dolu hücre olsa bile onları siliyor. Yani C2 boş olsun. Ben filtreleme yapınca D2 ve E2 dolu olsa da onları siliyor. A sütunu formül için kullanılıyor ve B' de de malzeme isimleri yazıyor. C,D ve E yi firma gibi düşünelim. B2 de ki üründen hangi firma ürün istiyorsa onun gözükmesini istiyorum. C ve E istemeyebilir ama D deki firma istiyor. O zaman C ve E boş olarak kalacak, D'de ürün adedi yazacak. Ancak C,D ve E boş olursa bütün satır silinebilir. Anlatabilmişimdir umarım.
 
Son düzenleme:
Katılım
9 Şubat 2022
Mesajlar
203
Excel Vers. ve Dili
Office 2021 Türkçe (x64)
Altın Üyelik Bitiş Tarihi
09-02-2027
1. Çözüm: F sütununu yardımcı olarak kullanın
Kod:
=EĞER(VE(EBOŞSA(C2);EBOŞSA(D2);EBOŞSA(E2));"";1)
yazın, artık 3 sütunda boşsa F sütünu boş olacak ve veriyi komple oradan basitçe süzebileceksiniz. Ancak sizin verinizde boş olan satırlar aslında boş olmayabiliyor, o nedenle üstteki formül hatalı çalışabilir.
Önce verinizdeki boş görünen hücrelerin gerçekten boş olmasını sağlamak için, tüm boş hücreleri seçip silin.
veya şu formülü kullanın 2. Çözüm:
Kod:
=EĞER(VE(UZUNLUK(KIRP(C2))=0;UZUNLUK(KIRP(D2))=0;UZUNLUK(KIRP(E2))=0);""; 1)
 
Son düzenleme:
Katılım
8 Aralık 2023
Mesajlar
8
Excel Vers. ve Dili
Excel 365 / Türkçe
1. Çözüm: F sütununu yardımcı olarak kullanın, örneğin SÜZME ismini verin:
F'ye
Kod:
=EĞER(VE(EBOŞSA(C2); EBOŞSA(D2); EBOŞSA(E2)); ""; 1)
yazın, artık 3 sütunda boşsa F sütünu boş olacak ve veriyi komple oradan basitçe süzebileceksiniz. Ancak sizin verinizde boş olan satırlar aslında boş olmayabiliyor, o nedenle üstteki formül hatalı çalışabilir.
Önce verinizdeki boş görünen hücrelerin gerçekten boş olmasını sağlamak için, tüm boş hücreleri seçip silin.
veya şu formülü kullanın 2. Çözüm:
Sizin formül üzerinden başka bir şey denedim ve oldu.
Kod:
=EĞER(VE(C2="";D2="";E2="");"";1)
Formülü bu şekilde düzelttim. Hücrelerin içinde formül olduğu için onları boş kabul etmiyordu. Bu şekilde oldu. Daha sonra gizlemek ve göstermek için basit bir makro kaydettim. Yardımınız için teşekkür ederim.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,641
Excel Vers. ve Dili
Pro Plus 2021
Aşağıdaki kodla (Ozet isimli bir sayfa oluşturun) Ozet sayfasına uygun kayıtları aktarır.

Kod:
Sub ozetle_AF()
    Dim rng As Range, rngCriteria As Range, son&
    Sheets("Ozet").Cells.ClearContents
    With Sheets("Sayfa1")
        son = .Cells(Rows.Count, 1).End(3).Row
        Set rng = .Range("A1:E" & son)
        Set rngCriteria = .Range("G1:G2")
        rngCriteria.Cells(2).Formula = "=OR(C2<>"""",D2<>"""",E2<>"""")"
        rng.Rows(1).Copy Sheets("Ozet").Range("A1")
        rng.AdvancedFilter 2, rngCriteria, Sheets("Ozet").Range("A1:E1"), False
        rngCriteria.ClearContents
    End With
End Sub
Aşağıdaki kodla aynı sayfa üzerinde filtreleme yapıp temizleyebilirsiniz.
Kod:
Sub yerindeFiltrele()
    Dim rng As Range, rngCriteria As Range
    With Sheets("Sayfa1")
        Set rng = .Range("A1:E" & .Cells(Rows.Count, 1).End(3).Row)
        Set rngCriteria = .Range("G1:G2")
        rngCriteria.Cells(2).Formula = "=OR(C2<>"""",D2<>"""",E2<>"""")"
        rng.AdvancedFilter 1, rngCriteria
        rngCriteria.ClearContents
    End With
End Sub
Sub filtreKaldir()
    With Sheets("Sayfa1")
        If .FilterMode Then .ShowAllData
        .Range("G1:G2").ClearContents
    End With
End Sub
 

Ekli dosyalar

Katılım
8 Aralık 2023
Mesajlar
8
Excel Vers. ve Dili
Excel 365 / Türkçe
Aşağıdaki kodla (Ozet isimli bir sayfa oluşturun) Ozet sayfasına uygun kayıtları aktarır.

Kod:
Sub ozetle_AF()
    Dim rng As Range, rngCriteria As Range, son&
    Sheets("Ozet").Cells.ClearContents
    With Sheets("Sayfa1")
        son = .Cells(Rows.Count, 1).End(3).Row
        Set rng = .Range("A1:E" & son)
        Set rngCriteria = .Range("G1:G2")
        rngCriteria.Cells(2).Formula = "=OR(C2<>"""",D2<>"""",E2<>"""")"
        rng.Rows(1).Copy Sheets("Ozet").Range("A1")
        rng.AdvancedFilter 2, rngCriteria, Sheets("Ozet").Range("A1:E1"), False
        rngCriteria.ClearContents
    End With
End Sub
Aşağıdaki kodla aynı sayfa üzerinde filtreleme yapıp temizleyebilirsiniz.
Kod:
Sub yerindeFiltrele()
    Dim rng As Range, rngCriteria As Range
    With Sheets("Sayfa1")
        Set rng = .Range("A1:E" & .Cells(Rows.Count, 1).End(3).Row)
        Set rngCriteria = .Range("G1:G2")
        rngCriteria.Cells(2).Formula = "=OR(C2<>"""",D2<>"""",E2<>"""")"
        rng.AdvancedFilter 1, rngCriteria
        rngCriteria.ClearContents
    End With
End Sub
Sub filtreKaldir()
    With Sheets("Sayfa1")
        If .FilterMode Then .ShowAllData
        .Range("G1:G2").ClearContents
    End With
End Sub
Teşekkürler. Bunu da deneyeceğim. Emeğinize sağlık :)
 
Üst