• DİKKAT

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

Saat dilimi aratma

Katılım
26 Ocak 2010
Mesajlar
22
Excel Vers. ve Dili
365
Merhaba arkadaşlar
Saat arama konusunda acil yardıma ihtiyacım var. Ekli tabloda iş yerimde sistemden çekmiş olduğum tarih ve saat bilgileri var. Tarih günlük değişmektedir, VBA'da find komutu ile saat aratmaktayım lakin aradığım saati bulmak yerine başka bir dilim çıkmakta karşıma. Örneğin, saat 13:00 arattırdığımda 12:13:00 AM gelmekte veya 21:00 arattırdığımda 12:21:00 AM gelmekte. Konu hakkında bana yardımcı olabilir misiniz? İstediğim saat dilimine Vba da nasıl ulaşabilirim
 

Ekli dosyalar

Makroyla ilgili bir soru sormuşsunuz ama eklediğiniz dosya xlsx uzantılı, yani içinde makro ya da userform yok. Dolayısıyla dosyaya bakanlar bahsettiğiniz komuttaki sorunu inceleyemez ve doğrusunu gösteremezler. Dosyayı hatalı haliyle paylaşmanızı öneririm.
 
Hücre formatınıza göre örnek olması açısından
C++:
    Aranan = "21:00"
    Aranacak = CDate(Aranan)
    With Range("A:A")
    .Find(Aranacak).Select
    End With
 
Teşekkür ederim emeğiniz için.
06:00, 08:00, 10:00, 11:00 ve 16:00 saatlerini arattırdığımda "Run Time Error" hatası vermekte. Ayrıca 14:00 arattırdığımda ise 12:00:00 PM i buluyor. Net sonuçlar nasıl alabilirim?
 
Ömer bey
Ayrıca eklemek istediğim bir konu daha var. Tablodaki saatler saat:dakika:saniye şeklindedir. İş yerinden çektiğim raporda saniye kısmı günlük değişmekte. Yani bugün çektiğim raporda saat 14:00:01 iken yarın 14:00:00 veya 14:00:02 olabiliyor. Kodlar ile arama yaparken saniyeyi gözetmeden sadece saat ve dakikayı dikkate aldırabilir miyiz?
 
Üç ayrı kod veriyorum. İnceleyin lütfen
C++:
Sub deneme()
    Dim Dict As Object, Bak As Date
    Set Dict = CreateObject("Scripting.Dictionary")
    arr = Range("A2:A" & Range("A" & Rows.Count).End(3).Row).Value
    For i = LBound(arr) To UBound(arr)
        Bak = TimeSerial(Hour(arr(i, 1)), Minute(arr(i, 1)), 0)
        If Not Dict.Exists(Bak) Then
            Dict.Add Bak, i + 1
        End If
    Next i
    Aranan = "06:00"
    Ara = TimeSerial(Left(Aranan, InStr(1, Aranan, ":") - 1), Right(Aranan, Len(Aranan) - InStr(1, Aranan, ":")), 0)
    If Dict.Exists(Ara) Then
        Range("A" & Dict(Ara)).Select
    Else
        MsgBox "Saat yok"
    End If
End Sub

Sub Alternatif1()
    'Verileriniz 00:00 dan 23:59 a kadar her dakika başı geliyorsa
    Aranan = "23:00"
    Satır = Left(Aranan, InStr(1, Aranan, ":") - 1) * 60 + Right(Aranan, Len(Aranan) - InStr(1, Aranan, ":")) + 2
    Range("A" & Satır).Select
End Sub

Sub Alternatif2()
    'Verileriniz 00:00 dan 23:59 a kadar her dakika başı geliyorsa
    Aranan = "23:07"
    Satır = Split(Aranan, ":")(0) * 60 + Split(Aranan, ":")(1) + 2
    Range("A" & Satır).Select
End Sub
 
Son düzenleme:
Ömer bey
Teşekkür ederim ellerinize sağlık
 
Geri
Üst