Çözüldü Eski tarihi fonksiyon ve makro ile silme

cavanoos

Altın Üye
Katılım
17 Aralık 2008
Mesajlar
633
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
11-01-2026
Merhaba;

Ekteki örnek dosyada B sütununda aynı ürün kodu olan varsa eğer A sütunundaki en ufak tarihin olduğu satırdaki C sütununa ESKİ yazması için formül yazabilir misiniz ?
Bir de aynı işlemi makro ile yapabilir miyiz ?
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,676
Excel Vers. ve Dili
Microsoft 365 Tr-64
C2 hücresine
Kod:
=EĞER(VE(EĞERSAY($B$2:$B$6;B2)>1;A2=MİN(EĞER($B$2:$B$6=B2;$A$2:$A$6;"")));"ESKİ";"")
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,676
Excel Vers. ve Dili
Microsoft 365 Tr-64
C++:
Sub Eski()
    Dim Dic, Veri
    Veri = Range("A2:B" & Range("A2").End(xlDown).Row).Value
    ReDim Liste(1 To UBound(Veri), 1 To 1)
    Set Dic = CreateObject("Scripting.Dictionary")
    For i = 1 To UBound(Veri)
        If Not Dic.Exists(Veri(i, 2)) Then
            Dic.Add Veri(i, 2), i & "-x"
        ElseIf Veri(i, 1) < Veri(Split(Dic(Veri(i, 2)), "-")(0), 1) Then
            Dic(Veri(i, 2)) = i & "-z"
        End If
    Next i
    For i = 1 To UBound(Veri)
        If i & "-z" = Dic(Veri(i, 2)) Then Liste(i, 1) = "ESKİ"
    Next i
    Range("C2").Resize(UBound(Veri), 1) = Liste
End Sub
 
Son düzenleme:

cavanoos

Altın Üye
Katılım
17 Aralık 2008
Mesajlar
633
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
11-01-2026
ÖmerFaruk Bey;

İlginiz için teşekkür ederim.
Fonksiyon ile yaptığınız sonuç döndürmedi.
Makro ile yaptığınız oldu.
Makro ile yaptığınızda benim için uygundur, fonksiyon olmasa da olabilir.
Dosya ektedir.

Sizden birşey daha rica edeceğim.
Örneklerimizde iki kod vardı. Farkettim ki asıl tablomda ikiden daha fazla kayıt var.
Fonksiyonu aynı kodun en büyük tarihi kalacak ve diğerlerinde eski yazacak şekilde yapılabilir mi ?
Ya da makro ile yine aynı mantık yazılabilir mi ?
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,676
Excel Vers. ve Dili
Microsoft 365 Tr-64
Bu ilk çalışmayan formül
Kod:
=EĞER(VE(EĞERSAY($B$2:$B$7;B2)>1;A2=MİN(EĞER($B$2:$B$7=B2;$A$2:$A$7;"")));"ESKİ";"")
Bu en büyüğünü boş geçer diğerlerine eski yazar.
Kod:
=EĞER(VE(EĞERSAY($B$2:$B$7;B2)>1;A2<MAK(EĞER($B$2:$B$7=B2;$A$2:$A$7;"")));"ESKİ";"")
Kod ila aşağıdaki gibi
C++:
Sub Eski2()
    Dim Dic, Veri
    Veri = Range("A2:B" & Range("A2").End(xlDown).Row).Value
    ReDim Liste(1 To UBound(Veri), 1 To 1)
    Set Dic = CreateObject("Scripting.Dictionary")
    For i = 1 To UBound(Veri)
        If Not Dic.Exists(Veri(i, 2)) Then
            Dic.Add Veri(i, 2), Veri(i, 1)
        ElseIf Veri(i, 1) > Dic(Veri(i, 2)) Then
            Dic(Veri(i, 2)) = Veri(i, 1)
        End If
    Next i
    For i = 1 To UBound(Veri)
        If Veri(i, 1) < Dic(Veri(i, 2)) Then Liste(i, 1) = "ESKİ"
    Next i
    Range("C2").Resize(UBound(Veri), 1) = Liste
End Sub
 
Son düzenleme:

cavanoos

Altın Üye
Katılım
17 Aralık 2008
Mesajlar
633
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
11-01-2026
Kod ile olan oldu, emeğinize sağlık
Formül ile olan olmadı.
Ekte gönderiyorum ama benim için kod ile olan da yeterli, tekrar teşekkür ederim.
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,676
Excel Vers. ve Dili
Microsoft 365 Tr-64
Formül dizi formüldüür. Ctrl+Shift+Enter ile girerseniz olacaktır.
 

cavanoos

Altın Üye
Katılım
17 Aralık 2008
Mesajlar
633
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
11-01-2026
Oldu
Peki aşağıdaki formülün dizi formül olduğunu nasıl anlarım ?
İşareti nedir ? :)


=EĞER(VE(EĞERSAY($B$2:$B$7;B2)>1;A2<MAK(EĞER($B$2:$B$7=B2;$A$2:$A$7;"")));"ESKİ";"")
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,676
Excel Vers. ve Dili
Microsoft 365 Tr-64
EĞER($B$2:$B$7=B2;$A$2:$A$7;"")
 
Üst