• DİKKAT

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

VBA ile Filtrelenen Satırları Saymak

  • Konbuyu başlatan Konbuyu başlatan igursoy
  • Başlangıç tarihi Başlangıç tarihi
Katılım
26 Aralık 2012
Mesajlar
4
Excel Vers. ve Dili
office 2010 ingilizce
Arkadaşlar şöyle bir sorum var. Elimde bir excel listesi mevcut, 5 kolondan oluşuyor.

1. Kolon Sıra No, 2. kolon İsim, 3. kolon 1. filtre, 4. kolon 2. filtre, 5. kolon 3. filtre

100 adette satır mevcut. Şimdi 1. kolonda satırlar boş.

2. kolonda 100 adet isim var.

3,4 ve 5. kolonlarda da rastgele "x" değerleri mevcut. x olmayan yerlerde veri yok.

İstenen şu;

3,4 veya 5. kolonlarda filtreleme yapıldığında yani sadece x ler listelendiğinde, bir butona basılacak ve 1. kolon altında sıra ile listelenen satır kadar rakamlar yazacak.

ben bunu döngü ile yaptım, ancak filtreleme yaptığımda sıralama atlayarak gidiyor.

Yardımcı olacak arkadaşlara şimdiden teşekkür ederim.
 
. . .

Şu kısımları biraz daha açmanızda fayda var.
Listelenen satır sayısını mı öğrenmek istiyorsunuz yoksa
listelenen satırlara sıra no mu vermek ?

. . .
 
Listelenen satırlara sıra no vermek istiyorum Hüseyin Bey, eksik yazmışım pardon.

Yani diyelim ki 1. filtrelemenin ardından 1. kolonda yer alan satırlarım 1,2,3,4,5 diye sıralı gidecek.

Veya 2. filtrelemenin ardından yine 1,2,3,4,5 diye sıralı gidecek.

Benim şu anda mevcut durumda filtreleme ardından örneğin sıra numaram 1,3,5,6,8 şeklinde filtrelenmiş duruma göre (yani ilgili filtre alanındaki X'in bulunduğu yere göre gidiyor) gidiyor.

Teşekkürler, ilginiz için.
 
Merhaba,

Bunun için makro şart mı?

A sütununun sıra numarası olduğunu varsayalım ve 1. satır başlık olsun
Aşağıdaki fonksiyonu filtreleme olmadan tüm satırlara uygulayın.
A2:

Kod:
=ALTTOPLAM(3;$B$2:B2)

Nasıl filtreleme yaparsanız yapın düzgün sıra numarası verecektir.
 
Bu sefer şu sıkıntı oluyor. 1. filtre belirttiğiniz gibi B kolonunda ise sayıyor ama diyelim ki C kolonunda 2. filtre mevcut. Bu sefer C kolonu için özel sayamıyor. B'deki X sayısı fazla ise yine B kadar sayıyor.
 
Filtreleme işleminden sonra aşağıdaki Kodu çalıştırıp deneyin.

Kod:
Sub Sira_No_Yenile()
    Dim X As Long, Son As Long, No As Long
    
    Son = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    No = 1
    
    For X = 2 To Son
        If Cells(X, 1).RowHeight <> 0 Then
            Cells(X, 1) = No
            No = No + 1
        Else
            Cells(X, 1) = ""
        End If
    Next
    
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Arkadaşlar hepinize çok teşekkür ederim.

Korhan Bey tam istediğim işlemi gerçekleştiriyor. Çok teşekkür ederim emeğiniz için. Saygılarımla.
 
güzel bir konu

merhaba veri filtresinden sonra (yani kaç tane filtreleme sutunu olursa olsun) süzülmüş veriye sıra no vermek ilginç bir uygulama olmuş.
iyi günler kolay gelsin.
 
Son düzenleme:
Filtreleme işleminden sonra aşağıdaki Kodu çalıştırıp deneyin.

Kod:
Sub Sira_No_Yenile()
    Dim X As Long, Son As Long, No As Long
   
    Son = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    No = 1
   
    For X = 2 To Son
        If Cells(X, 1).RowHeight <> 0 Then
            Cells(X, 1) = No
            No = No + 1
        Else
            Cells(X, 1) = ""
        End If
    Next
   
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
Üstad emeğine sağlık, ben şunu ararken bu kodlara rastladım ama bana filtrenen satır sayısı lazım. Aşağıdaki kod ile satır sayısını saydırıyorum ama filtrediğim zaman gizlenen satırlarıda sayıyor. Ben sadece filtrenen satır sayısını dinamik olarak A9'a yazdıracağım. Yardımcı olabilir misiniz

Sub satirsay()
Range("a9") = ""
ss = Application.WorksheetFunction.CountA(Range("a11 :a2000"))
Range("a9") = "Toplam " & ss & " kayıt listelenmiştir."

End Sub
 
Filtre durumları için ALTTOPLAM fonksiyonunu kullanabilirsiniz.
 
Filtre durumları için ALTTOPLAM fonksiyonunu kullanabilirsiniz.
alt toplam ile hallettim şu şekilde çözdüm üstad. Belki başkasının da ihtiyacı olur diye aşağıda paylaşayım

Sub satirsayfiltre()
Range("a9") = ""
ss = Application.WorksheetFunction.Subtotal(3, Range("A11:A2000"))

Range("a9") = "Toplam " & ss & " kayıt listelenmiştir."

End Sub
 
alt toplam ile hallettim şu şekilde çözdüm üstad. Belki başkasının da ihtiyacı olur diye aşağıda paylaşayım

Sub satirsayfiltre()
Range("a9") = ""
ss = Application.WorksheetFunction.Subtotal(3, Range("A11:A2000"))

Range("a9") = "Toplam " & ss & " kayıt listelenmiştir."

End Sub
Merhaba
Ben de aynı sorunu yaşadım. Fakat subtotal fonksiyonu bu işi çözmedi. Sayma yapıp istediğim hücreye değeri girdiremedim. Filtreden sonra dolu satırları saymanın başka bir yolu var mı??
 
Çözüm için örnek dosyanızı görmekte fayda var.
 
Geri
Üst