• DİKKAT

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

Liste Dizi nindeki En Büyük Tarih

  • Konbuyu başlatan Konbuyu başlatan askm
  • Başlangıç tarihi Başlangıç tarihi

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,746
Excel Vers. ve Dili
2010-2016
Hayırlı akşamlar.
A sütununda isimler B sütunundaki tarihleri alarak bir dizi oluşturuyorum. (adı liste) Bu liste içerisindeki en büyük tarihi C1 e yazdırmak istiyorum. Aplication.Max(Liste(,2)) şeklinde yazıyorum olmuyor. Maximum ve minimum tarihi nasıl bulabilirim.
 
Benim önerim, dizi değişkene aktarma sırasında bu tespitin yapılması.
Dizi ye 1 den başlayarak dataları aktarıyoruz.
Dizi de 0 ı ise büyük ve küçük tarih için ayırıyoruz.

Kod:
Dim liste(100, 2) As String
Dim buyuktarih, kucuktarih As Date

Sub buyuk_kucuk_tarih()
   sonsatir = Cells(Rows.Count, "A").End(3).Row
   eskitarih = CDate("01.01.1900")
   For i = 1 To sonsatir
     adi = Cells(i, "A").Value
     tarih = CDate(Cells(i, "B").Value)
     If i = 1 Then
        buyuktarih = tarih
        kucuktarih = tarih
     End If
     
     If tarih > eskitarih Then buyuktarih = tarih
     If tarih < eskitarih Then kucuktarih = tarih
     liste(i, 1) = adi
     liste(i, 2) = tarih
     liste(0, 1) = kucuktarih
     liste(0, 2) = buyuktarih
     
     eskitarih = tarih
   Next i
End Sub
 
Sayın Asri teşekkür ederim. Set Dizi = CreateObject("Scripting.Dictionary") şeklinde dizi oluşturuyorum. Hücreye aktarırken metin olarak aktarıyor. s3.Range("A1").Resize(Say, 2) = Application.Transpose(Liste) Bu nedenle de büyük küçük bulamıyor.
 
Merhaba,
Yazdıklarım boşa gitmesin. Alternatif olsun.
Kod:
Sub en_kucuk_en_buyuk_veriler()
Dim Liste, sh As Worksheet, ss As Long, kck_kalem As String, byk_kalem As String

Set sh = Sayfa1
ss = sh.Range("A55500").End(3).Row

Liste = sh.Range("A2:B" & ss)
    kck = Liste(1, 2)
    kck_kalem = Liste(1, 1)
    byk = Liste(1, 2)
    byk_kalem = Liste(1, 1)
For i = 1 To UBound(Liste)
    If kck > Liste(i, 2) Then
        kck = Liste(i, 2)
        kck_kalem = Liste(i, 1)
    End If
    
    If byk < Liste(i, 2) Then
        byk = Liste(i, 2)
        byk_kalem = Liste(i, 1)
    End If
Next i
    MsgBox "En küçük kalem : " & kck_kalem & vbTab & _
    "En küçük tarih : " & kck & vbCrLf & _
    "En büyük kalem : " & byk_kalem & vbTab & _
    "En büyük tarih : " & byk, vbInformation, "antonio"
End Sub
 
Son düzenleme:
Amacım bir sütunda bir kelimeyi aramak. Yanındaki sütunda da bulduğu kelimenin olduğu tarihlerden en büyük tarihi almak. Örneği A sütununda kalem kelimelerini arıyor. B sütununda 10 tane kalem bulmuşsa onların giriş tarihi var. Bu tarihlerden en son tarihi almak amaç.
 
Hatırlatma : Kodlarda son satır değişkeni yerine 8.nci satır kullanılmıştır. Liste = Sayfa1!A2:B8
 
Sayın askm,
Dizilerde ki değerleri kıyaslamak için, döngü oluşturup her elemanı kıyaslamak gerekiyor. (Range özellikleri geçerli değil). Zaten 1 den son elemana kadar tek tek inceliyorsunuz. İsim döngünün bulunduğu satıra da bir değişken atayarak, buradaki değeri hafızaya alabilirsiniz.
 
Amacım bir sütunda bir kelimeyi aramak. Yanındaki sütunda da bulduğu kelimenin olduğu tarihlerden en büyük tarihi almak. Örneği A sütununda kalem kelimelerini arıyor. B sütununda 10 tane kalem bulmuşsa onların giriş tarihi var. Bu tarihlerden en son tarihi almak amaç.
4.Numaralı Mesajımdaki kodları belirttiğiniz şekilde revize ettim. MesajBox ile yazdırdığım verileri dosyanıza uyarlayabilirsiniz. Kolay gelsin.
 
İlginize teşekkür ederim.
Aşağıdaki şekilde çözüme ulaştım.
Kod:
With Dizi
        For X = 1 To UBound(Veri, 1)
            If Veri(X, 10) = Aranan Then
                If CDate(Veri(X, 13)) > CDate("01.01.1900") Then
                    Say = Say + 1
                    ReDim Preserve Liste(1 To 2, 1 To Say)
                    tarih = CDate(Veri(X, 13))
                    Liste(1, Say) = Veri(X, 10)
                    Liste(2, Say) = Veri(X, 13)
                End If
            End If
        Next
 
Geri
Üst