Çözüldü Seçili Hücreye Göre Filtre Oluşturma

cavanoos

Altın Üye
Katılım
17 Aralık 2008
Mesajlar
640
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
11-01-2026
Merhaba;

A dan Z ye kadar veri girişi alanım var.
B sütununda Tarih verisi var.
Örneğin seçili B156 hücresinde 16.01.2024 değeri var.

Yapmak istediğim işlem; filtre oluşturmak ve seçili 16.01.2024 tarihten büyük ve eşit olanları listelemek

Yardımcı olabilir misiniz ?
 

cavanoos

Altın Üye
Katılım
17 Aralık 2008
Mesajlar
640
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
11-01-2026
Aşağıdaki kod ile filtre alanı seçiyorum ve tarih filtresini veriyorum.

Range("A1:AM1").Select
Range(Selection, Selection.End(xlDown)).Select
Range("A1:AM212").Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$AM$523").AutoFilter Field:=2, Criteria1:=">=15.01.2024", Operator:=xlAnd


Aşağıdaki kod ise seçili hücreyi işaret ediyor diye düşünüyorum.

ActiveCell.Offset(0, 0).Value

Bu ikisini birleştirmeye çalışıyorum ama olmadı. Alttaki kod olmadı, kodu nasıl yazsak olurdu ?

Range("A1:AM1").Select
Range(Selection, Selection.End(xlDown)).Select
Range("A1:AM212").Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$AM$523").AutoFilter Field:=2, Criteria1:=ActiveCell.Offset(0, 0).Value, Operator:=xlAnd
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,257
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Kod:
Sub Makro1()

    Dim lrow As Long
    
    If Not ActiveCell.Column = 2 Then Exit Sub
    If ActiveSheet.AutoFilterMode = True Then Selection.AutoFilter
    lrow = Cells(Rows.Count, "A").End(3).Row
    
    ActiveSheet.Range("$A$1:$Z$" & lrow).AutoFilter Field:=ActiveCell.Column, Criteria1:=">=" & CDbl(ActiveCell.Value)
    
End Sub
 

cavanoos

Altın Üye
Katılım
17 Aralık 2008
Mesajlar
640
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
11-01-2026
Necdet Bey;

Anlam veremediğim bir durumun içindeyim.
Kodunuzu uzak masaüstünde çalıştığım excel dosyasında deniyorum, son satırı hata döndürüyor.
Dosyayı kodunuz ile birlikte kopyalıyorum ve kendi masaüstüme taşıyorum ve burada sorunsuz çalışıyor.
Aynı dosya bir yerde çalışıyor, diğer yerde çalışmıyor.
Dosyanın içinde başka makrolarda var, onlar çalışıyor.

Neden olabilir ?
 
Katılım
20 Şubat 2007
Mesajlar
525
Excel Vers. ve Dili
2007 Office, Tr
Tarih sütunu kontrol ediniz. Gerçek tarih formatında olmayabilir. Yani görünüşte tarih formatında gibidir ama metin olarak formatlanmıştır.
 

cavanoos

Altın Üye
Katılım
17 Aralık 2008
Mesajlar
640
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
11-01-2026
Necdet Bey;

Sorunu tespit ettim.
Öncelikle tarih sütununda ayraç nokta olmalı, diğeri olmuyor.

Diğer sorun ise;

Criteria1:=">=" & CDbl(ActiveCell.Value)

Alttaki kod da CDbl kodu çıkarınca uzak masaüstündeki dosyamız çalıştı fakat kendi masaüstümdeki dosya çalışmadı.
Şu an itibari ile sorunum çözülmüştür.
Fakat bu kod ne anlam ifade eder ?
 

muzaffer.sm

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
372
Excel Vers. ve Dili
Microsoft Office Professional Plus 2016 TR
Altın Üyelik Bitiş Tarihi
07-12-2024
CDbl tür dönüşümü :
Dizedeki karakterlerin sayı olarak bir anlamı varsa, dizeleri çiftlere dönüştürmek için VBA CDbl işlevi kullanılabilir.
Yani verilen bir bilgiyi, ondalıklı sayıya çevirir. Matematiksel tür dönüşümünü sağlar.


Örnek :
Sub CDblOrnek()
Dim str As String
Str = "147"
MsgBox CDbl(Str)
Sonuç : 147
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,257
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Tarih gerçekten tarih ise cdbl fonksiyonu double değerine dönüştürüyor.
Örneğin Bugünün tarihi 19.02.2024 ü 45341 değerine çevirir. Dolayısıyla tarih gibi değil sanki rakam filtrelenmiş gibi işlem yapmış oluyoruz.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,257
Excel Vers. ve Dili
Ofis 365 Türkçe
Tekrar Merhaba,
Sadece tarih ile sınırlandırmayalım.

Kod:
Sub Degisken_Filtrele()

Dim deg  As Variant

If ActiveSheet.AutoFilterMode = True Then Cells.AutoFilter

If IsDate(ActiveCell.Value) = True Then
    deg = CDbl(ActiveCell.Value)
Else
    deg = ActiveCell.Value
End If

ActiveSheet.Range("A1").CurrentRegion.AutoFilter Field:=ActiveCell.Column, Criteria1:=">=" & deg

End Sub
 

cavanoos

Altın Üye
Katılım
17 Aralık 2008
Mesajlar
640
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
11-01-2026
Necdet Bey;

Harika olmuş, emeğinize sağlık...
 
Üst