• DİKKAT

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

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

Katılım
17 Aralık 2008
Mesajlar
780
Excel Vers. ve Dili
Microsoft 365
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 ?
 
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
 
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
 
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 ?
 
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.
 
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 ?
 
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
 
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.
 
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
 
Necdet Bey;

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