Soru Tarihe göre filitreleme

Katılım
16 Kasım 2017
Mesajlar
255
Excel Vers. ve Dili
office professional plus 2021
Hayırlı Cumalar,
Aşağıya eklemiş olduğum kodlarla iki tarih arasına göre filitreleme yapıyorum fakat 2 sorunum var;

1-) Filitreleme işleme tam gerçekleşmiyor ve tüm satırlar kayboluyor. Filitre uygulanan 4.sütundan filire ayarlarına giriyorum iki tarih aralığını istediğim gibi eklemiş fakat komut tamamlanmamış. Ben onaylayınca filitreleme işlemi gerçekleşiyor.
2-) Ben filitrelemeyi belirlenen aralıktaki hücreye uygulanmasını istiyorum fakat tüm satırlar kayboluyor. sağ tarafa eklemiş olduğum formüllerde filitreleniyor. Halbuki textboxta yaptığım şu filireleme kodu sadece belirlenen hücreleri filitreliyor:
Private Sub TextTarih_Change()
ActiveSheet.Unprotect
Range("A4:E10000").CurrentRegion.AutoFilter field:=4, Criteria1:=TextTarih.Text
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Yardımlarınız için teşekkürler.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
tarih1 = Range("L6").Value
tarih2 = Range("M6").Value
Range("A3:I5000").AutoFilter field:=4, Criteria1:=">=" & tarih1, Operator:=xlAnd, Criteria2:="<=" & tarih2
End Sub
 

Korhan Ayhan

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

Filtre satırını aşağıdaki gibi değitirip deneyiniz.

C++:
Range("A3:I5000").AutoFilter field:=4, Criteria1:=">=" & CLng(tarih1), Operator:=xlAnd, Criteria2:="<=" & CLng(tarih2)
 
Katılım
16 Kasım 2017
Mesajlar
255
Excel Vers. ve Dili
office professional plus 2021
Merhaba,

Filtre satırını aşağıdaki gibi değitirip deneyiniz.

C++:
Range("A3:I5000").AutoFilter field:=4, Criteria1:=">=" & CLng(tarih1), Operator:=xlAnd, Criteria2:="<=" & CLng(tarih2)
Korhan Hocam Merhabalar,
Cevabınız uyarı olarak bana gelmediği için şimdi farkettim. Hocam teşekkürler.
Bende gelişmiş filitreleme ile şöyle yapmıştım;
Range("A2:J48").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("R1:S2"), Unique:=False
Hocam her iki kodda da sayfanın herhangi bir hücresinde makro aktif oluyor. Sadece koşulun olduğu iki hücrede aktif yapılamaz mı?
Bir diğer merak ettiğim de filitreleme yapılan alanın sağ tarafındaki sütunlarda da veriler kayboluyor, bu engelenemz mi.
 

Korhan Ayhan

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

C++:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Tarih1 As Variant, Tarih2 As Variant
    If Intersect(Target, Range("L6:M6")) Is Nothing Then Exit Sub
    Tarih1 = Range("L6").Value
    Tarih2 = Range("M6").Value
    Range("A3:I5000").AutoFilter field:=4, Criteria1:=">=" & CLng(Tarih1), Operator:=xlAnd, Criteria2:="<=" & CLng(Tarih2)
End Sub
Filtre işlemi tüm satırları etkiler. Lokal bir alana filtre yapsanızda satırlar etkilendiği için filtre dışında kalan veriler bu durumdan etkilenmiş olur. Yani talebiniz excelin çalışma mantığına ters düşüyor. Bu sebeple yapılamaz.
 
Katılım
16 Kasım 2017
Mesajlar
255
Excel Vers. ve Dili
office professional plus 2021
Deneyiniz.

C++:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Tarih1 As Variant, Tarih2 As Variant
    If Intersect(Target, Range("L6:M6")) Is Nothing Then Exit Sub
    Tarih1 = Range("L6").Value
    Tarih2 = Range("M6").Value
    Range("A3:I5000").AutoFilter field:=4, Criteria1:=">=" & CLng(Tarih1), Operator:=xlAnd, Criteria2:="<=" & CLng(Tarih2)
End Sub
Filtre işlemi tüm satırları etkiler. Lokal bir alana filtre yapsanızda satırlar etkilendiği için filtre dışında kalan veriler bu durumdan etkilenmiş olur. Yani talebiniz excelin çalışma mantığına ters düşüyor. Bu sebeple yapılamaz.
Teşekkürler Korhan Hocam. Bende bunu merak ediyordum. Eksik olmayın herzaman yardımcı oluyorsunuz, ALLAH RAZI OLSUN İNŞALLAH.
Kodları ilk fırsatta deniyeceğim.
 
Katılım
16 Kasım 2017
Mesajlar
255
Excel Vers. ve Dili
office professional plus 2021
Korhan Hocam Merhabalar,

Şöyle bir sorun çıktı. M6 hücresindeki tarihi formata uygun yazmayınca misal, 28.02.2016 yerine 30.02.2016 yazınca hata veriyor. Bende hatada uyarı vermesi için formu araştırdım sizinde cevapladığınız bir konuda şöyle bir kod buldum;
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
TextBox1.Value = Format(TextBox1.Value, "dd.mm.yyyy")
If Not IsDate(TextBox1.Value) Then
MsgBox "Yanlış giriş.Geçerli bir tarih giriniz.", vbCritical
Cancel = True
End If
End Sub
Bende böyle uyarı versin istiyorum fakat bu textbox için olduğundan benim durumuma uyarlayamadım. Yardımcı olursanız sevinirim.
 
Üst