• DİKKAT

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

listbox'u iki tarih arası filteleme

  • Konbuyu başlatan Konbuyu başlatan cems
  • Başlangıç tarihi Başlangıç tarihi

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,581
Excel Vers. ve Dili
office 2010 tr 32bit
Daha önce Sn @Haluk tarafından önerilmiş olan bu listbox tarama kodlarını uzun süre bir çok çalışmamda kullandım, eminim ki listbox'uiki tarih arası süzen kodları da kullandım. Ancak arsivde ararken her nasılsa ya karıştırdım, bu sefer de net ile forum üzerinde bulmak isterken de kafa balon oldu, çok fazla örnek olmakla birlikte çalışmanın düzenini bozmamak adına direk siteye " o küçük farkı " sorma kolaycılığı ile günün sonuna ulaştım.

Uygulamak istediğim iki özellik ; 17000 den fazla gerçek veriyi textbox yardımı ile listbox üzerinde iki tarih arası süzebilmek. Sn @Haluk'a ait bu kodlarla tekil bulma çok yerde çalışsa da
1-İki tarih arasını listboxta süzme ( textbox130 ilk tarih için textbox131 son tarih için )
2-Başka textbox ile Tc Kimlik ve telefon gibi sayısal olan verileri süzerek listboxta tek satır haline ulaştırma


Private Sub TextBox130_Change() 'dddddddd Dim S1 As Worksheet, S2 As Worksheet, Satir As Long Application.ScreenUpdating = False Set S1 = Sheets("TABLO") Set S2 = Sheets("RAPOR") If TextBox130 <> "" And Len(TextBox130) = 10 Then If TextBox130 <> "" Then ListBox2.RowSource = "" S2.Cells.Delete S1.Range("a1").AutoFilter S1.Range("A1:z" & S1.Rows.Count).AutoFilter Field:=9, Criteria1:=Format(CDate(TextBox130.Value), "dd.mm.yyyy") ',TextBox130.Value) & "*" S1.Range("A1").CurrentRegion.Copy S2.Range("A1") S1.Range("A2:M" & S1.Rows.Count).AutoFilter Field:=9 Satir = S1.Cells(S1.Rows.Count, 1).End(3).Row ListBox2.RowSource = "RAPOR!A2:z" & Satir Else S1.Range("A2:z" & S1.Rows.Count).AutoFilter Field:=9 Satir = S1.Cells(S1.Rows.Count, 1).End(3).Row ListBox2.RowSource = "TABLO!A2:z" & Satir End If End If Application.ScreenUpdating = True End Sub


Userform_initialize içinde de

TextBox130.Value = Format(TextBox130.Value, "dd.mm.yyyy") TextBox131.Value = Format(TextBox131.Value, "dd.mm.yyyy")

Yerleştirdim , ancak falan tarihten filan tarihe kadar listbox2 de döküme artık düşünemediğimden ulaşamadım. Textboxların kendilerini formatlamak mı gerek artık bunu bile karıştırıyorum.
 
Merhaba,

Örnek dosya paylaşır mısınız?
 
Sayın Korhan Ayhan ,
Örnek dosya hazırlamak bile birebir olmayacak , güvenilir olduğunuzdan dolayı mesaj kısmı üzerinden gerçek veri bulunan dosyayı sizinle paylaşmama izin verir misiniz ?

Bu arada tarih süzgecini çözdüm ve bu dosyada var , ancak diğer filtrelerle mantıklı ve ortak çalışmıyor. Tek başına tarih aralığını süzüyor ancak bu aralıkta ad süzgecinde ahmet bul dediğimde tarih aralığı bozulmuyor ama ahmet ve o aralıkta olan herkes geliyor,Yani filtrelerin eşgüdümlü çalışması tek başlarına tamam ama süzülen veriyi süzmede güvenilir değil,
Şu anki problemler :
a- süzgeçlerin ortak şekilde güvenilir süzme yapması
b- tc ve telefon süzgeçlerine ait textboxların sayısal görmemesi
 
Son düzenleme:
Elbette paylaşabilirsiniz.
 
Size ; amaç , açıklama ve sorunu anlatan bir metinle dosyayı gönderdim , çok teşekkür ederim
 
Filtreleriniz her değişimde çalışıyor. Paylaştığınız dosyada 1000 satırlık bir veri var. Bu sebeple hızlı sonuç veriyor gibi görünebilir.

Her değişimde filtreleme yapmak yerine bütün kriterleri girdikten sonra bir butona basarak filtreleme yapmak daha mantıklı olacaktır.

Ek olarak metinsel veriler için içerir-içermez-ile başlar-ile biter gibi filtreleme kullanabilirsiniz.

Ama mesela TC NO alanını aynı biçimde filtreleyemezsiniz. Çünkü sayısal olarak veri girişi yapılmış. Bu tür alanlar için filtre kriterinde tamamı yazılarak işlem yapılabilir. Örneğin 1 ile başlayan TC NO ları süzmek isterseniz excelin filtresi ile yapamazsınız. Ama bu alanı Metin (Text) olarak biçimlendirip veri girişini de bu yönde yaparsanız o zaman ile başlar-içerir gibi filtreleme yapabilirsiniz.

Aynı durum TARİH içinde geçerlidir. Sayısal bir alan olduğu için tarihin tamamı yazılarak filtreleme yapabilirsiniz.
 
Sayın Ayhan ,

Açıklamalarınız doğrultusunda düşündüğümde bazı şeylerin cevabını sözlerinizde buldum. En azından 2017 datasında sistemi sağlıklı ve verimli oturtursam 2021 e doğru kalanı yüklersem büyük karışıklık çıkarmayabilir olarak düşünmüştüm. Süzme içi süzme için textboxlardaki sorguları birlikte verip bir tuş vasıtası ile son süzülmüş sonuca gitmek yolunu deneyeceğilm

Öncelikle tarih filtreleri dışında olan TCNo ve telefon no alanlarında textbox metinsel veri gördüğünde adım adım çalışacak . Yarının güniçi programı belli oldu . Tarihin tam girmeden çalışmadığını farkettim , belki gelen veriden de bir alt süzme olabilir diye düşünmüştüm.

Önerileriniz yeni bir ışık yolu tuttu ,gerçekten bazı " sanma" larımı değiştirdi, tüm zamanınız ve incelemeleriniz için çok teşekkür ederim :)
 
Geri
Üst