Filtrelenmiş alandan satır gizleme

tgtd

Altın Üye
Katılım
26 Mayıs 2005
Mesajlar
37
Altın Üyelik Bitiş Tarihi
10-10-2024
Merhabalar Üstadlar. 10 bin satırlık veri listesinde filtreleme yapıyorum. C32 hücresinden yaptığım filtre sonucu değişken sayıda satır veri geliyor. Yapmak istediğim bu gelen filtrelenmiş listenin son 10 satırını göstermek , diğerlerini gizlemek istiyorum. Vba ile nasıl yapabilirim
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,343
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2029
dosyanız olmadıgından deneme sansı olmadan gonderiyorum , dosyanın kopyası ile Deneyin ,

Aşağıdaki VBA kodu, belirli bir hücreden (örneğin, C32) başlayarak filtrelenmiş veri listesinin son 10 satırını gösterebilir ve diğer satırları gizleyebilirsiniz:

Sub SonOnSatiriGoster()
Dim ws As Worksheet
Dim filtreAlan As Range
Dim sonSatir As Long
Dim baslangicSatiri As Long
Dim gosterilecekSatirSayisi As Long

' Çalışma sayfasını belirtin
Set ws = ThisWorkbook.Sheets("Sayfa1") ' Sayfa1'i kendi sayfanızın adıyla değiştirin

' Filtre alanını belirtin (C32 gibi)
Set filtreAlan = ws.Range("C32")

' Filtrelenmiş veri aralığının son satırını bulun
sonSatir = ws.Cells(ws.Rows.Count, filtreAlan.Column).End(xlUp).Row

' Gosterilecek satır sayısını belirtin (en fazla 10)
gosterilecekSatirSayisi = 10

' Eğer son satır sayısı 10'dan küçükse, gosterilecek satır sayısını son satır sayısına ayarlayın
If sonSatir < gosterilecekSatirSayisi Then
gosterilecekSatirSayisi = sonSatir
End If

' Başlangıç satırını hesaplayın
baslangicSatiri = sonSatir - gosterilecekSatirSayisi + 1

' Tüm satırları gizleyin
ws.Rows.Hidden = True

' Gosterilecek olan satırları gösterin
ws.Rows(baslangicSatiri & ":" & sonSatir).Hidden = False
End Sub

Bu kod, "Sayfa1" adlı çalışma sayfanızda ( ihtiyaca göre adını değiştirebilirsiniz ) C32 hücresinden başlayarak filtrelenmiş veri listesinin son 10 satırını gösterir.
 
Son düzenleme:

tgtd

Altın Üye
Katılım
26 Mayıs 2005
Mesajlar
37
Altın Üyelik Bitiş Tarihi
10-10-2024
252159
Üstadım teşekkür ederim yardımınız için. fakat filtreleme sonucu satır sayıları çok değişken geliyor, son 10 satırı al dediğimizde aradaki filtrelenmemiş satırları getiriyor. Yani örnek resimdeki gibi 21508 21494 21456 21121 gibi sadece filtrelenmiş veriye ait son 10 satır görün istiyorum. Çok teşekkür ederim tekrardan
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,343
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2029
Resimle ne yapılabilir ki ? En azından kopya dosyanın ilk 50 satırı olan bir deneme dosyası atmanız daha yardımcı olacaktır.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,950
Excel Vers. ve Dili
2019 Türkçe
Kod:
Set filtreAlan = ws.Range("C32")
Bu satır yerine aşağıdaki satırı kullanırsanız sanırım doğru sonuç alacaksınız.
Kod:
Set filtreAlan = Range("A1").End(xlDown)
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,950
Excel Vers. ve Dili
2019 Türkçe
Deneyiniz.
Kod:
Sub SonOnSatiriGoster()
    Dim ws As Worksheet
    Dim filtreAlan As Range
    Dim sonSatir As Long
    Dim baslangicSatiri As Long
    Dim gosterilecekSatirSayisi As Long
    
    ' Çalışma sayfasını belirtin
    Set ws = ThisWorkbook.Sheets("Sayfa1") ' Sayfa1'i kendi sayfanızın adıyla değiştirin
    
    ' Filtre alanını belirtin (C32 gibi)
    Set filtreAlan = ws.Range("C32")
    'Set filtreAlan = Range("A1").End(xlDown)
    ' Filtrelenmiş veri aralığının son satırını bulun
    sonSatir = ws.Cells(ws.Rows.Count, filtreAlan.Column).End(xlUp).Row
    
    ' Gosterilecek satır sayısını belirtin (en fazla 10)
    gosterilecekSatirSayisi = 10
    
    ' Eğer son satır sayısı 10'dan küçükse, gosterilecek satır sayısını son satır sayısına ayarlayın
    If sonSatir < gosterilecekSatirSayisi Then
    gosterilecekSatirSayisi = sonSatir
    End If
    
    ' Başlangıç satırını hesaplayın
    baslangicSatiri = sonSatir - gosterilecekSatirSayisi + 1
    
    ' Tüm satırları gizleyin
    ws.Rows.Hidden = True
    
    ' Gosterilecek olan satırları gösterin
    ws.Rows(baslangicSatiri & ":" & sonSatir).Hidden = False
    ws.Rows("1:31").Hidden = False
    Range("A31").Select
End Sub
 

tgtd

Altın Üye
Katılım
26 Mayıs 2005
Mesajlar
37
Altın Üyelik Bitiş Tarihi
10-10-2024
Merhabalar Üstadlar yardımınız için teşekkürler. Yukarıdaki kod ile 10 kayıt listeleniyor fakat filtrelenen kişiye ait olanı değil , enson filtrelenmiş veriden başlayarak sıralı bir şekilde sıralıyor. Eklediğim resimlerdeki gibi252177
 

tgtd

Altın Üye
Katılım
26 Mayıs 2005
Mesajlar
37
Altın Üyelik Bitiş Tarihi
10-10-2024
Do
If rFound.Row - 1 Then
blocksize = rFound.Row - 1
'other code.

MsgBox rFound.Row

End If

Set rFound = .FindNext(rFound)
Loop Until rFound.Address = firstAdd

Üstadlarım bu kod ile fitrlelenmiş bütün satırların numarasını alıyorum. Örneğin bulduğu 15 satır var bunun ilk 5 ini geçsin kalan 10 satırı listelesin burada takıldım.
 
Üst