Skip to main content

AccessTr.neT


Formülle En Küçük Tarihleri Çekme

Formülle En Küçük Tarihleri Çekme

#31
(08/11/2020, 00:19)berduş yazdı: Ama her seyi de benden beklemeyin @feraz bey)
TrhDonsEski = Day(Trh) yerine TrhDonsEski = format(Trh, "dd") yazin olur biter
Ben yazarımda üye bilmezse diye aydım abey Img-grin
Daha sırada hh:mm:nn burdaki nn neden ss değil diye soracaktım Img-grin
Daha önce bildiğim kadarıyla salise içindi nn yanlış hatırlamıyorsam.
Cevapla
#32
(08/11/2020, 00:30)feraz yazdı: Daha sırada hh:mm:nn burdaki nn neden ss değil diye soracaktım Img-grin
Daha önce bildiğim kadarıyla salise içindi nn yanlış hatırlamıyorsam.
o konuda haklisiniz saniye kismi dikkatimden kacmis olabilir.
Yarin uygun bir zamanda kontrol etmeye çalışırım

Gifi inceleyince farkettim saniye yerine de dakikayi yazmis, nn dakika yerine kullaniliyordu aklim saniyeye gitmis. orasi dedigin8z gibi ss olmali;
hh:mm:ss seklinde duzeltilmeli
Cevapla
#33
(07/11/2020, 23:17)feraz yazdı: El birliği ile bitireceğiz inşAllah Img-grin

[Resim: do.php?img=10587]

Sub xx()
    Dim dic As Object, dic1 As Object, dic2 As Object
    Dim i As Long, sonNokta As Byte, parcaal
    Dim degerA As String, degerB As String
    Dim say As Long
   
    Set dic = CreateObject("Scripting.Dictionary")
    Set dic1 = CreateObject("Scripting.Dictionary")
    Set dic2 = CreateObject("Scripting.Dictionary")
   
    With ThisWorkbook.Sheets("Sayfa1")
        .Range("G2:J" & Rows.Count).ClearContents
        son = .Cells(Rows.Count, 1).End(3).Row + 1
   
        For i = 3 To 30
            degerA = CStr(.Cells(i, 1).Value)
            degerB = CStr(.Cells(i, 2).Value)
            Do While .Cells(i, 1).Value = .Cells(i + 1, 1).Value
                If Not dic1.Exists(degerA) Then
                    sonNokta = InStrRev(CStr(.Cells(i + 1, 2).Value), ".") - 1
                    If sonNokta > 0 Then
                        parcaal = Format(Replace(Mid(.Cells(i + 1, 2).Value, 1, sonNokta), ".", ":"), "dd.mm.yyyy hh:mm:ss")
                    End If
                    dic2(parcaal) = parcaal
                End If
                i = i + 1
            Loop
            If dic2.Count > 0 Then
                say = say + 1
                .Cells(say + 2, "G").Value = degerA + 0
                .Cells(say + 2, "H").Value = degerB
                .Cells(say + 2, "i").Value = bubble_sort(dic2.Keys())
                .Cells(say + 2, "j").Value = .Cells(say + 2, "i").Value
                .Range("i:j").NumberFormat = "dd.mm.yyyy hh:mm.ss"
                Set dic2 = CreateObject("Scripting.Dictionary")
            End If
        Next
    End With
    MsgBox "Bitti"
Set dic = Nothing: Set dic1 = Nothing: Set dic2 = Nothing
End Sub

Function bubble_sort(dict2)
    Dim q As Long, w As Long
   
    For q = 0 To UBound(dict2, 1) - 1
        For w = q To UBound(dict2, 1)
            If dict2(q) > dict2(w) Then
                temp = dict2(q)
                dict2(q) = dict2(w)
                dict2(w) = temp
            End If
        Next
    Next
  bubble_sort = dict2(0)
End Function
@feraz bey sonucu yanlış hesaplamıyor mu?
mesela 10609708 için açık min=02-SEP-20 10:49:37 yani 2.9.2020 iken sizin sonucunuz--> 1.09.2020  10:49:37
hesaplar açık ve kapalıdan bağımsız yapılmış sanki
ben mi yanlış anladım acık/kapalı durumundan bağımsız mı olacak sonuçlar?
Cevapla
#34
(08/11/2020, 01:49)berduş yazdı:
(07/11/2020, 23:17)feraz yazdı: El birliği ile bitireceğiz inşAllah Img-grin

[Resim: do.php?img=10587]

Sub xx()
    Dim dic As Object, dic1 As Object, dic2 As Object
    Dim i As Long, sonNokta As Byte, parcaal
    Dim degerA As String, degerB As String
    Dim say As Long
   
    Set dic = CreateObject("Scripting.Dictionary")
    Set dic1 = CreateObject("Scripting.Dictionary")
    Set dic2 = CreateObject("Scripting.Dictionary")
   
    With ThisWorkbook.Sheets("Sayfa1")
        .Range("G2:J" & Rows.Count).ClearContents
        son = .Cells(Rows.Count, 1).End(3).Row + 1
   
        For i = 3 To 30
            degerA = CStr(.Cells(i, 1).Value)
            degerB = CStr(.Cells(i, 2).Value)
            Do While .Cells(i, 1).Value = .Cells(i + 1, 1).Value
                If Not dic1.Exists(degerA) Then
                    sonNokta = InStrRev(CStr(.Cells(i + 1, 2).Value), ".") - 1
                    If sonNokta > 0 Then
                        parcaal = Format(Replace(Mid(.Cells(i + 1, 2).Value, 1, sonNokta), ".", ":"), "dd.mm.yyyy hh:mm:ss")
                    End If
                    dic2(parcaal) = parcaal
                End If
                i = i + 1
            Loop
            If dic2.Count > 0 Then
                say = say + 1
                .Cells(say + 2, "G").Value = degerA + 0
                .Cells(say + 2, "H").Value = degerB
                .Cells(say + 2, "i").Value = bubble_sort(dic2.Keys())
                .Cells(say + 2, "j").Value = .Cells(say + 2, "i").Value
                .Range("i:j").NumberFormat = "dd.mm.yyyy hh:mm.ss"
                Set dic2 = CreateObject("Scripting.Dictionary")
            End If
        Next
    End With
    MsgBox "Bitti"
Set dic = Nothing: Set dic1 = Nothing: Set dic2 = Nothing
End Sub

Function bubble_sort(dict2)
    Dim q As Long, w As Long
   
    For q = 0 To UBound(dict2, 1) - 1
        For w = q To UBound(dict2, 1)
            If dict2(q) > dict2(w) Then
                temp = dict2(q)
                dict2(q) = dict2(w)
                dict2(w) = temp
            End If
        Next
    Next
  bubble_sort = dict2(0)
End Function
@feraz bey sonucu yanlış hesaplamıyor mu?
mesela 10609708 için açık min=02-SEP-20 10:49:37 yani 2.9.2020 iken sizin sonucunuz--> 1.09.2020  10:49:37
hesaplar açık ve kapalıdan bağımsız yapılmış sanki
ben mi yanlış anladım acık/kapalı durumundan bağımsız mı olacak sonuçlar?
Abey açığı kapalıyı bilmiyorumda ben mesela A merkez burdaki en küçüğü buldurdum ve çıkanı açık ve kapalıya aynısını eklettim Img-grin
Diğer B,C lerde aynı yöntemle oldu Img-grin
Extra sonlarda bir satırda küçük tarihli saat eklemiştim denemek için onu en küçük olarak doğru bulmuştu bana göre heralde verdiğiniz tarihte o olması gerek.
Cevapla
#35
ben en küçüğü bulurken her kod için mesala açık için açık sütununda sayı olanlar içinden en küçüğü buldum
neyse bu saatten sonra çok da önemi kalmadı galiba)
Cevapla
#36
Aklımda kaldığı kadarıyla nasıl yaptığımı anlatayım.
Son satıra kadar dönhü yaptım.
Bu döngü çalışırken Merkezi(B sütun) yerine gelince do while ile tekrar döngüye sokup dictionarye aldırdım A sütunundaki verilerin benzersiz olana kadar.Döngüdeykende B sütununu tarih ve saat olarak diziye aldırdım.Bu dizileride sıralama koduna yolladı.Sonunsada sıralanınca ilk eleman en küçük olunca onu eklettim ilgili sütunlara.

(08/11/2020, 02:13)berduş yazdı: ben en küçüğü bulurken her kod için mesala açık için açık sütununda sayı olanlar içinden en küçüğü buldum
neyse bu saatten sonra çok da önemi kalmadı galiba)
Bilmiyorum abey biz zor işlerle uğraşıyoruz.En kestirme yol aslında verileri kodla başka sayfaya aktarıp orda sıralatıp vs... işlem yapmak daha kolaydı normali.
Neyse artık yanlışlık felan varsa engin abey yazar .
Daha öncede dediğim gibi hala anlamadım olayı neden açık ve kapalı olaylar için tarih ve saatler aynı.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da