Soru AY SEÇEREK ,TARİH ARALIĞI FİLTRELEME

MESUT K

Altın Üye
Katılım
26 Nisan 2019
Mesajlar
221
Excel Vers. ve Dili
İş'te:Excel 2016 eng
Ev'de:Excel 2013 tr
Altın Üyelik Bitiş Tarihi
29-04-2025
Herkese merhaba

Sorunumla ilgili site içerisinde benzer konu buldum fakat bulduğum konu üzerinden çözüme ulaşamadım.Özel filtre kısmınıda denedim o da işimi görmedi.

Dosya içerisinde sorunumu detaylı olarak gösterdim.Bilen üstadlarımdan yardım istiyorum.Saygılarımla


 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Dosyanızda çalıştırmıştım. Cevap gelmiş ama yine de paylaşayım.
C++:
Sub Filtrele()
    Dim Alan As Range, Tarih1 As Date, Tarih2 As Date, Sh As Worksheet
    Set Sh = Worksheets("Sayfa1")
    With Sh
        Set Alan = Sh.Range("B2:B" & Sh.Range("B" & Rows.Count).End(3).Row)
        Tarih1 = DateSerial(Range("D1"), 1, 1)
        Do
            If Format(Tarih1, "mmmm") = Replace(StrConv(Sh.Range("G1"), vbProperCase), "İ", "i") Then Exit Do
            Tarih1 = DateAdd("m", 1, Tarih1)
        Loop
        Tarih2 = DateAdd("m", 1, Tarih1) - 1
        Alan.AutoFilter Field:=1, Criteria1:=">=" & CDbl(Tarih1), Operator:=xlAnd, Criteria2:="<=" & CDbl(Tarih2)
    End With
    Set Sh = Nothing: Set Alan = Nothing
End Sub
 

MESUT K

Altın Üye
Katılım
26 Nisan 2019
Mesajlar
221
Excel Vers. ve Dili
İş'te:Excel 2016 eng
Ev'de:Excel 2013 tr
Altın Üyelik Bitiş Tarihi
29-04-2025
Dosyanızda çalıştırmıştım. Cevap gelmiş ama yine de paylaşayım.
C++:
Sub Filtrele()
    Dim Alan As Range, Tarih1 As Date, Tarih2 As Date, Sh As Worksheet
    Set Sh = Worksheets("Sayfa1")
    With Sh
        Set Alan = Sh.Range("B2:B" & Sh.Range("B" & Rows.Count).End(3).Row)
        Tarih1 = DateSerial(Range("D1"), 1, 1)
        Do
            If Format(Tarih1, "mmmm") = Replace(StrConv(Sh.Range("G1"), vbProperCase), "İ", "i") Then Exit Do
            Tarih1 = DateAdd("m", 1, Tarih1)
        Loop
        Tarih2 = DateAdd("m", 1, Tarih1) - 1
        Alan.AutoFilter Field:=1, Criteria1:=">=" & CDbl(Tarih1), Operator:=xlAnd, Criteria2:="<=" & CDbl(Tarih2)
    End With
    Set Sh = Nothing: Set Alan = Nothing
End Sub
Ömer faruk bey g1 hücresindeki açılır listede bu kodun çalışması için nasıl uygulayabilirim
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Zaten G1 hücresndeki AY adına bakıyor. Sizin kastınız başka bir şey mi?
 

MESUT K

Altın Üye
Katılım
26 Nisan 2019
Mesajlar
221
Excel Vers. ve Dili
İş'te:Excel 2016 eng
Ev'de:Excel 2013 tr
Altın Üyelik Bitiş Tarihi
29-04-2025
Ömer faruk bey g1 hücresindeki açılır listede bu kodun çalışması için nasıl uygulayabilirim
Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Dim Alan As Range, Tarih1 As Date, Tarih2 As Date, Sh As Worksheet
    Set Sh = Worksheets("Sayfa1")
    With Sh
        Set Alan = Sh.Range("B2:B" & Sh.Range("B" & Rows.Count).End(3).Row)
        Tarih1 = DateSerial(Range("D1"), 1, 1)
        Do
            If Format(Tarih1, "mmmm") = Replace(StrConv(Sh.Range("G1"), vbProperCase), "İ", "i") Then Exit Do
            Tarih1 = DateAdd("m", 1, Tarih1)
        Loop
        Tarih2 = DateAdd("m", 1, Tarih1) - 1
        Alan.AutoFilter Field:=1, Criteria1:=">=" & CDbl(Tarih1), Operator:=xlAnd, Criteria2:="<=" & CDbl(Tarih2)
    End With
    Set Sh = Nothing: Set Alan = Nothing
End Sub
bu şekilde sayfaya uyguladım fakat çalışmadı
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
İdris Serdar Bey dosya içeriği çok iyi fakat bunu el ile yazılan tarihleri süzmede işimi görmeyecek gibi

İlk mesajında dosyada detaylı gösterdim demişsiniz. Ben Detay bir şey göremedim. Filtreleyecek derken nasıl? Bir örnek verir misiniz?

.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
G1 hücresi değişince kodlar da çalışsın istiyorsanız aşağıdaki gibi kullanın

C++:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [G1]) Is Nothing Then Exit Sub
    Dim Alan As Range, Tarih1 As Date, Tarih2 As Date, Sh As Worksheet
    Set Sh = Worksheets("Sayfa1")
    With Sh
        Set Alan = Sh.Range("B2:B" & Sh.Range("B" & Rows.Count).End(3).Row)
        Tarih1 = DateSerial(Range("D1"), 1, 1)
        Do
            If Format(Tarih1, "mmmm") = Replace(StrConv(Sh.Range("G1"), vbProperCase), "İ", "i") Then Exit Do
            Tarih1 = DateAdd("m", 1, Tarih1)
        Loop
        Tarih2 = DateAdd("m", 1, Tarih1) - 1
        Alan.AutoFilter Field:=1, Criteria1:=">=" & CDbl(Tarih1), Operator:=xlAnd, Criteria2:="<=" & CDbl(Tarih2)
    End With
    Set Sh = Nothing: Set Alan = Nothing
End Sub
 

MESUT K

Altın Üye
Katılım
26 Nisan 2019
Mesajlar
221
Excel Vers. ve Dili
İş'te:Excel 2016 eng
Ev'de:Excel 2013 tr
Altın Üyelik Bitiş Tarihi
29-04-2025
G1 hücresi değişince kodlar da çalışsın istiyorsanız aşağıdaki gibi kullanın

C++:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [G1]) Is Nothing Then Exit Sub
    Dim Alan As Range, Tarih1 As Date, Tarih2 As Date, Sh As Worksheet
    Set Sh = Worksheets("Sayfa1")
    With Sh
        Set Alan = Sh.Range("B2:B" & Sh.Range("B" & Rows.Count).End(3).Row)
        Tarih1 = DateSerial(Range("D1"), 1, 1)
        Do
            If Format(Tarih1, "mmmm") = Replace(StrConv(Sh.Range("G1"), vbProperCase), "İ", "i") Then Exit Do
            Tarih1 = DateAdd("m", 1, Tarih1)
        Loop
        Tarih2 = DateAdd("m", 1, Tarih1) - 1
        Alan.AutoFilter Field:=1, Criteria1:=">=" & CDbl(Tarih1), Operator:=xlAnd, Criteria2:="<=" & CDbl(Tarih2)
    End With
    Set Sh = Nothing: Set Alan = Nothing
End Sub
Ömer Faruk Bey bu şekilde tam istediğim gibi oldu çok teşekkür ederim
 

MESUT K

Altın Üye
Katılım
26 Nisan 2019
Mesajlar
221
Excel Vers. ve Dili
İş'te:Excel 2016 eng
Ev'de:Excel 2013 tr
Altın Üyelik Bitiş Tarihi
29-04-2025
231301

Ömer Faruk Bey benim ekte verdiğim dosyada verdiğiniz kodlar çok düzgün çalışıyor.Verdiğiniz kodu esas kullanmak istediğim dosyaya uyarladığım zaman bu şekilde hata alıyorum.Ekte verdiğim dosya ile esas uygulamak istedğim dosya arasında çok bir fark yok.
 

MESUT K

Altın Üye
Katılım
26 Nisan 2019
Mesajlar
221
Excel Vers. ve Dili
İş'te:Excel 2016 eng
Ev'de:Excel 2013 tr
Altın Üyelik Bitiş Tarihi
29-04-2025
Set Sh = Worksheets("RAPOR NO") şeklinde değiştirince kod çalıştı.Fakat şimdide herhangi bir ayı seçtiğimde komple tarihleri gizliyor
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Tarih1 yazan satırı aşağıdaki gibi değiştirin.
Yıl öncekin dosyanızda D1 deydi yeni dosyanızda A1 de ise D1 yazan kısmı A1 yaparsınız)
Tarih1 = DateSerial(Sh.Range("D1"), 1, 1)
 

MESUT K

Altın Üye
Katılım
26 Nisan 2019
Mesajlar
221
Excel Vers. ve Dili
İş'te:Excel 2016 eng
Ev'de:Excel 2013 tr
Altın Üyelik Bitiş Tarihi
29-04-2025
tarih kısmını düzelttim .Kod şuan hata vermiyor fakat şimdide tarih 2021 olarak seçili olduğu halde ama 2000 li yılları süzmeye çalışıyor.
Birde "BÜTÜN AYLAR" yazdığımda komple süzdürmenin kalkmasını sağlayabilirmiyiz

231303
 

MESUT K

Altın Üye
Katılım
26 Nisan 2019
Mesajlar
221
Excel Vers. ve Dili
İş'te:Excel 2016 eng
Ev'de:Excel 2013 tr
Altın Üyelik Bitiş Tarihi
29-04-2025
Kodda sıkıntı kalmadı şuan.

Sadece "BÜTÜN AYLAR" yazdığımda komple süzdürmenin kalkmasını sağlayabilirmiyiz
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Bütün Aylar yine G1 de yazacaksa, aşağıdaki gibi Set Alan=..... satırının altına verdiğim IF ile başlayan satırı ilave edin
C++:
Set Alan = Sh.Range("B2:B" & Sh.Range("B" & Rows.Count).End(3).Row)
        If [G1] = "Bütün Aylar" Then Alan.AutoFilter: Set Sh = Nothing: Set Alan = Nothing: Exit Sub
Not: Bütün Aylar yerine BÜTÜN AYLAR kullanıyorsanız doğru sonuç vermez. Birinden birini değiştirsiniz.
 

MESUT K

Altın Üye
Katılım
26 Nisan 2019
Mesajlar
221
Excel Vers. ve Dili
İş'te:Excel 2016 eng
Ev'de:Excel 2013 tr
Altın Üyelik Bitiş Tarihi
29-04-2025
Dediğiniz şekilde uyguladım benim için sakıncası yok.Bu şekilde hata gösterdi
231304
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Dosyanızı son haliyle paylaşırmısın.
Do öncesindeki Tarih satırı hata vermemişse bu satırın da hata vermemesi gerekir.
 

MESUT K

Altın Üye
Katılım
26 Nisan 2019
Mesajlar
221
Excel Vers. ve Dili
İş'te:Excel 2016 eng
Ev'de:Excel 2013 tr
Altın Üyelik Bitiş Tarihi
29-04-2025
ay geçişleri yaparkende bu hatayı verebiliyor.Dosyanın son hali ektedir
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Dosyayı açtım, kodlar hata vermeden çalışıyor, filtreliyor, ay geçişlerinde de hata vermeden doğru sonucu döndürüyor.
 
Üst