• DİKKAT

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

sütunda yazana göre tarih araştırma

Katılım
25 Ocak 2006
Mesajlar
763
Excel Vers. ve Dili
2019 tr
E sütununda ilanda yazıp da karşısındaki satırın N sütununda yazan tarih bugünün tarihini geçmişse ihalesi yapılan işler var diye mesaj çıkartabilir miyiz. teşekkürler.
 
Şu kod satırını kullanabilirsiniz.
Kod:
If WorksheetFunction.CountIfs(Range("E:E"), "ilanda", Range("N:N"), "<" & CDbl(Date)) > 0 Then MsgBox "İhalesi yapılan işler var."
 
cevap için bir kez daha teşekkürler... "E:E" kısmı invalid outside procedure hatası veriyor.
 
Bir örnek dosya paylaşırsanız tahminler üzerine düşünmek yerine doğru bir çözüm üretebiliriz.
 
Yukarıdaki kodu dosyanıza uyguladım, inceleyiniz...
 

Ekli dosyalar

Rica ederim, iyi çalışmalar...
 
konu konuyu açıyor ama bir şey danışmak istiyorum. az buçuk kopya az buçuk da mantık yürüterek bir şeyler yazmaya başladım kodlarla.
Kod:
Private Sub Workbook_Open()
Set gt = Sheets("gt")
Set hg = Sheets("HÜCRE GİRİŞ")
If WorksheetFunction.CountIfs(gt.Range("E:E"), "İlanda", gt.Range("N:N"), "<" & CDbl(Date)) > 0 Then MsgBox "İhalesi yapılan işler var.", vbCritical
    Cancel = False
    gt.Activate
    gt.Range("e3:e1600").AutoFilter Field:=5, Criteria1:="İlanda"
Dim lngStart As Long, lngEnd As Long
    lngStart = hg.Range("n5").Value 'assume this is the start date
    lngEnd = hg.Range("n6").Value 'assume this is the end date
    gt.Range("n3:n1600").AutoFilter Field:=14, _
        Criteria1:=">=" & lngStart, _
        Operator:=xlAnd, _
        Criteria2:="<=" & lngEnd
gt.Range("a1").Activate

End Sub

şöyle bir kod yazdım ama çok fazla karışık oldu. dosyayı açtığımda şartları sağlayan satırların filtrelenmesi için, sadece ilanda yazanları ve bugünden önceki tarihleri otomatik filtrelemek için daha kolay yol var mı
 
Şunu bir deneyin.
PHP:
Private Sub Workbook_Open()
Set gt = Sheets("gt")
If WorksheetFunction.CountIfs(gt.Range("E:E"), "İlanda", gt.Range("N:N"), "<" & CDbl(Date)) > 0 Then
    cvp = MsgBox("İhalesi yapılan işler var." & vbLf & "Sayfada filtreleme yapılsın mı?", vbCritical Or vbYesNo)
    If cvp = vbYes Then
        gt.Range("$A$2:$N$1600").AutoFilter Field:=5, Criteria1:="İlanda"
        gt.Range("$A$2:$N$1600").AutoFilter Field:=14, Criteria1:="<" & CDbl(Date)
    Else
        gt.Range("$A$2:$N$1600").AutoFilter
    End If
End If
End Sub
 
çok mantıklı. böyle olmalıymış zaten. :) tek sorun hayıra basınca filtrelerimi kaldırıyor. bunu da sanırım bu şekilde düzelttik.
Kod:
Private Sub Workbook_Open()
Set gt = Sheets("gt")
If WorksheetFunction.CountIfs(gt.Range("E:E"), "İlanda", gt.Range("N:N"), "<" & CDbl(Date)) > 0 Then
    cvp = MsgBox("İhale Tarihi Geçmiş İşler Var." & vbLf & "Nelermiş!!! Bakmak İster misiniz?", vbCritical Or vbYesNo)
    If cvp = vbYes Then
        gt.Range("$A$2:$N$1600").AutoFilter Field:=5, Criteria1:="İlanda"
        gt.Range("$A$2:$N$1600").AutoFilter Field:=14, Criteria1:="<" & CDbl(Date)

    
ElseIf cvp = vbNo Then
MsgBox "PEKİ, İPTAL EDEYİM BARİ!", vbMsgBoxSetForeground
Exit Sub

    End If
End If
End Sub

(çok önemli değil ama aklıma geldiğinde yazıyorum...1600 yerine son dolu hücre deme şansımız olabilir mi ya da spesifik olarak e sütununda en son "t" yazan hücreye kadar filtreleme yapsa. "t" hariç....)
 
Son düzenleme:
Merhaba,
E sütunundaki son dolu satır için şu kodu kullanabilirsiniz: ss = gt.Cells(Rows.Count, "E").End(3).Row
Spesifik isteğiniz için de şunu: ss = Range("E:E").Find(What:="t", LookAt:=xlWhole, SearchDirection:=xlPrevious).Row - 1
Artık hangisini kullanmak isterseniz. Bu durumda filtrelemeyi de şu kodla yapabilirsiniz:
gt.Range("$A$2:$N$" & ss).AutoFilter Field:=5, Criteria1:="İlanda"

İyi çalışmalar...
 
Son düzenleme:
Geri
Üst