En yakın rakamı bulmak

bmutlu966

Altın Üye
Katılım
26 Ocak 2006
Mesajlar
756
Excel Vers. ve Dili
Office 365 İngilizce 64 Bit
Altın Üyelik Bitiş Tarihi
31-01-2025
Arkadaşlar selam,
Dosyada basit bir örnekle açıkladım. Bir kişiye ait tutarlarla birkaç tane tutarı karşılaştırıp en yakın rakamın yanına yazdırmaya çalışıyorum ancak maalesef başaramadım. Yardımcı olacak üstadlar için şimdiden teşekkürler.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,330
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.

C++:
Option Explicit

Sub En_Yakini_Bul_Aktar()
    Dim Dizi As Object, Veri As Variant, Son As Long
    Dim Bul As Range, Formul As String, Satir As Long
    
    Set Dizi = CreateObject("Scripting.Dictionary")
    
    With Sheets("Data")
        .Range("F5:F" & .Rows.Count).ClearContents
        Son = .Cells(.Rows.Count, "C").End(3).Row
        For Each Veri In .Range("C5:C" & Son)
            Dizi.Item(Veri.Value) = 1
        Next
            
        For Each Veri In Dizi.Keys
            Set Bul = Sheets("Tutar").Range("C:C").Find(Veri, , , xlWhole)
            If Not Bul Is Nothing Then
                Formul = "=MATCH(MIN(IF(C5:C1048576=""" & Veri & """,ABS(" & Replace(Bul.Offset(, 2).Value, ",", ".") & _
                "-E5:E1048576))),IF(C5:C1048576=""" & Veri & """,ABS(" & Replace(Bul.Offset(, 2).Value, ",", ".") & "-E5:E1048576)),0)"
                
                Formul = Replace(Formul, 1048576, Son)
                                
                On Error Resume Next
                Satir = 0
                Satir = Evaluate(Formul)
                On Error GoTo 0
                                
                If Satir > 0 Then
                    .Cells(Satir + 4, "F") = Bul.Offset(, 2).Value
                End If
            End If
        Next
    End With

    Set Bul = Nothing
    Set Dizi = Nothing

    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 

bmutlu966

Altın Üye
Katılım
26 Ocak 2006
Mesajlar
756
Excel Vers. ve Dili
Office 365 İngilizce 64 Bit
Altın Üyelik Bitiş Tarihi
31-01-2025
Korhan bey selam, Öncelikle emeğiniz için teşekkürler. Sizden çok şey öğreniyoruz bu platformda.
Ahmet ve Mehmet ait veriyi doğru şekilde buldu. Ancak farklı rakamlarla denemelerimde ya yanlış rakamı buluyor yada boş olarak getiriyor.

Yapılabilir mi bilmiyorum. Örneğin Data sayfasındaki bir kod için kaç değer var ise bir listeye atsa, sonra bu listedeki değerleri Tutar sayfasındaki değerlerden tek tek çıkartarak çıkan en düşük değeri bulsa bu değere karşılık gelen listedeki değer satırı yaklaşık en düşük değer olacak. Dosya içerisinde de bir örnek ile açıklamaya çalıştım. Belki de makro içindeki sizin formülasyonunuzla da düzeltilebilir. Ben biraz uğraştım ancak yapamadım.
 

Ekli dosyalar

Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,330
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ben hesaplama yaparken büyük en yakın değeri dikkate almıştım. Bundan dolayı istediğiniz sonucu vermemiştir. Kodu dosyanıza göre yeniden düzenlerim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,330
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Kodu revize ettim. Son halini denersiniz.
 

bmutlu966

Altın Üye
Katılım
26 Ocak 2006
Mesajlar
756
Excel Vers. ve Dili
Office 365 İngilizce 64 Bit
Altın Üyelik Bitiş Tarihi
31-01-2025
Çok teşekkürler. Emeğinize sağlık. Şimdi tam istediğim gibi olmuş.
 
Üst