AccessTr.neT
Formülle En Küçük Tarihleri Çekme - Baskı Önizleme

+- AccessTr.neT (https://accesstr.net)
+-- Forum: Microsoft Excel (https://accesstr.net/forum-microsoft-excel.html)
+--- Forum: Excel Cevaplanmış Soruları (https://accesstr.net/forum-excel-cevaplanmis-sorulari.html)
+--- Konu Başlığı: Formülle En Küçük Tarihleri Çekme (/konu-formulle-en-kucuk-tarihleri-cekme.html)

Sayfalar: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16


RE: Formülle En Küçük Tarihleri Çekme - berduş - 09/11/2020

(09/11/2020, 00:48)feraz yazdı: Sağol abey bu soruları sormak bu güne nasipmiş Img-grin
Rica ederim.
Iyi çalışmalar.


RE: Formülle En Küçük Tarihleri Çekme - alicimri - 09/11/2020

ADO ile yapılmış örnek ekte


Re: Formülle En Küçük Tarihleri Çekme - feraz - 09/11/2020

Bu da Dictionary ve  Array ile.
ZAMAN sütunundakiler sıralıysa sorun olmaz.
Değilse ona göre tekran ayarlanması gerek.Ali cimri hocamızın Ado yöntemide öyle heralde.

Private Sub CommandButton1_Click()
    Dim dic As Object
    Dim son As Long, i As Long, aranan, aranan2, aranan3
    Dim say As Long, arr()
    say = 1
    With ThisWorkbook.Sheets("Sayfa1")
        .Range("H2:K" & Rows.Count).ClearContents
        son = .Range("A" & Rows.Count).End(3).Row
       
        ReDim arr(1 To son, 1 To 4)
        If son < 2 Then Exit Sub
        Set dic = CreateObject("Scripting.Dictionary")
       
        For i = 2 To son
            aranan = .Cells(i, 1).Value
            aranan2 = .Cells(i, 2).Value
            aranan3 = .Cells(i, 4).Value
            If .Cells(i, 3).Value = "AÇIK" Then
                If Not dic.Exists(aranan & "||" & aranan2) Then
                    dic.Add aranan & "||" & aranan2, aranan3
                    arr(say, 1) = aranan
                    arr(say, 2) = aranan2
                    arr(say, 3) = aranan3
                    arr(say, 4) = Empty
                    say = say + 1
                End If
            End If
        Next
        '----------------------------------------------------------
        Set dic = CreateObject("Scripting.Dictionary")
        say = 1
        For i = 2 To son
            aranan = .Cells(i, 1).Value
            aranan2 = .Cells(i, 2).Value
            aranan3 = .Cells(i, 4).Value
            If .Cells(i, 3).Value = "KAPALI" Then
                If Not dic.Exists(aranan & "||" & aranan2) Then
                    dic.Add aranan & "||" & aranan2, aranan3
                    arr(say, 4) = aranan3
                    say = say + 1
                End If
            End If
        Next
        If dic.Count > 0 Then .Range("H2").Resize(dic.Count, 4).Value = arr
    End With
    MsgBox "Bitti"
    Set dic = Nothing: Erase arr
    aranan = Empty: aranan2 = Empty: aranan3 = Empty

End Sub



RE: Formülle En Küçük Tarihleri Çekme - berduş - 09/11/2020

Burada tarih alani sorunlu ama normal tarih olsaydi excelde de ,accessteki gruplama sorgulari gibi pivot yapilamaz mi?

Gruplama sorgularinda da en küçük, büyük gibi degerler seçilebiliyor.


RE: Formülle En Küçük Tarihleri Çekme - feraz - 09/11/2020

(09/11/2020, 12:50)berduş yazdı: Burada tarih alani sorunlu ama normal tarih olsaydi excelde de ,accessteki gruplama sorgulari gibi pivot yapilamaz mi?

Gruplama sorgularinda da en küçük, büyük gibi degerler seçilebiliyor.
Sorguda heralde tarih ve zaman gibi algılar heralde bu dosyadada abey emin değilim.
Denemek için tarihleri başka sütuna koptaladım biyükten küçüğe sırala dedim sıraladı.Bu mantığa görede sıralar Sql ile.Laki gruplama için zaten Zaman sütun benzersiz.
Ali cimri hocamızda Ado ile pivot yaptırmış.


RE: Formülle En Küçük Tarihleri Çekme - alicimri - 09/11/2020

Sayın @feraz siz sıralı konusunu yazınca dikkatimi çekti gerçekten öyle imiş. Yeni eklediğim dosyada sıra karışık da olsa sorun çıkmaz.