Çoklu kritere göre maksimum tarihi bulmak

Katılım
27 Mart 2021
Mesajlar
79
Excel Vers. ve Dili
ofis 2010
Merhabalar

A sütununda isimlerin, B sütununda izin türlerinin (Yıllık izin-Mesai izni-Ücretsiz izin vb.) ve C sütununda tarihlerin olduğu (Tarih listesi karışık) "veri" sayfasından , Combobox'tan seçtiğim ismin enson hangi tarihte Yıllık izne çıktığını bulmak istiyorum. Bilgisayarda kısıtlama olduğu için dosya paylaşamıyorum, yardımlarınızı bekliyorum.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Userformda mı sayfada mı bu combobox?
Formülle çok daha kolay ve ve hızlı çözüm var. Sorunuzu Makrolarda sormuşsunuz. Makro olarak mı istiyorsunuz?
 
Katılım
27 Mart 2021
Mesajlar
79
Excel Vers. ve Dili
ofis 2010
Combobox userformda ve mümkünse formül olarak değil kod olarak istiyorum
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Örnek dosya olmadığı için deneyemiyorum.
Aşağıdak bir userform içindeki Combobox1 deki değer göre çalışan kod var.
Kendinize uyarlarsınız.
C++:
Sub EnSonTarih()
Dim myDate As Date, Bul As Range
    Set Bul = Range("A:A").Find(ComboBox1.Value, , xlValues, xlWhole)
    Set Bul = Range("A:A").Find(TextBox1, , , xlWhole)
    If Not Bul Is Nothing Then
        Adres = Bul.Address
        Do
            If Bul.Offset(0, 1) = "Yıllık izin" Then If Bul.Offset(0, 2) > myDate Then myDate = Bul.Offset(0, 2)
            Set Bul = Range("A:A").FindNext(Bul)
        Loop While Not Bul Is Nothing And Bul.Address <> Adres
    End If
    Sonuc = myDate
End Sub
 
Katılım
27 Mart 2021
Mesajlar
79
Excel Vers. ve Dili
ofis 2010
Sayın ÖmerFaruk bey kod denedim olmadı ama hala denemeye devam ediyorum
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Userform oluşturdum. Combobox yerine TextBox2 deki ismi aratıp sonucu TextBox1 yazdım.
Küçük bir liste hazırladım. Sonuçlar doğru.
C++:
Private Sub CommandButton1_Click()
Call Me.EnSonTarih
End Sub
Sub EnSonTarih()
Dim myDate As Date, Bul As Range
    Set Bul = Range("A:A").Find(TextBox2)
    If Not Bul Is Nothing Then
        Adres = Bul.Address
        Do
            If Bul.Offset(0, 1) = "Yıllık izin" Then If Bul.Offset(0, 2) > myDate Then myDate = Bul.Offset(0, 2)
            Set Bul = Range("A:A").FindNext(Bul)
        Loop While Not Bul Is Nothing And Bul.Address <> Adres
    End If
    TextBox1 = myDate
End Sub
 
Katılım
27 Mart 2021
Mesajlar
79
Excel Vers. ve Dili
ofis 2010
Tamam şimdi oldu, sonuçları dediğiniz gibi doğru gösteriyor. Çok teşekkür ederim hayırlı çalışmalar.
 
Üst