• DİKKAT

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

Çözüldü Aralıkta değilse, diğer aralığa bak

xsamet

Altın Üye
Katılım
19 Mart 2017
Mesajlar
19
Excel Vers. ve Dili
2010
Merhaba üstadlar; EĞER D6'daki değer (aşağıdakiler içinde aynı şey geçerli olacak, D7,D8,D9), "MESAFE" sayfasındaki B6-C6 aralığında ise A6'yı yaz. Değilse B7-C7 ye bak o aralıktaysa A7'yi yaz, değilse B8-C8 şeklinde devam eden bir formül bulamadım 2 gündür. Yazabilirim belki ama çok uzun oluyor hata yapabilirim. Kısa bir yolu varmıdır.

https://www.dosyaupload.com/jbXd
 
Son düzenleme:
Mesafeler sayfası
B6: 106860 => C6: 107580
B7: 107820 => C7: 108660

107580 ile 107820 arasındaki bir değer olursa ne olacak?

Eğer bu önemli değilse ve Mesafeelr sayfasında B sütunu her zaman küçükten büyüğe sıralanmışsa aşağıdaki formülü deneyin:

=ARA(D2;MESAFE!$B$6:$B$28;MESAFE!$A$6:$A$28)
 
Mesafeler sayfası
B6: 106860 => C6: 107580
B7: 107820 => C7: 108660

107580 ile 107820 arasındaki bir değer olursa ne olacak?
Aslında bu durumda da sağ taraftaki aralıkta araması lazım ama çok karmaşık oluyor sanırım.
Yani ozaman Kazı değil Dolgu numarası yazması gerekiyor.
 
Formülle iki ayrı tablodan nasıl bulunur bilemedim, makroyla isterseniz aşağıdaki kodları deneyiniz:

PHP:
Sub yol()
Set s1 = Sheets("MESAFE")
Set s2 = Sheets("icm_tp")

son2 = s2.Cells(Rows.Count, "D").End(3).Row
sonb = s1.Cells(Rows.Count, "B").End(3).Row
song = s1.Cells(Rows.Count, "G").End(3).Row
son = WorksheetFunction.Max(sonb, song)
For i = 2 To son2
    For j = 6 To son
        If s2.Cells(i, "D") >= s1.Cells(j, "B") And s2.Cells(i, "D") <= s1.Cells(j, "C") Then
            s2.Cells(i, "C") = s1.Cells(j, "A")
            s2.Cells(i, "J") = "Kazı"
            GoTo 10
        ElseIf s2.Cells(i, "D") >= s1.Cells(j, "G") And s2.Cells(i, "D") <= s1.Cells(j, "H") Then
            s2.Cells(i, "C") = s1.Cells(j, "F")
            s2.Cells(i, "J") = "Dolgu"
            GoTo 10
        End If
    Next
10:
Next
End Sub
 
Önce makroyu nasıl uygulayacağımı öğrenmem gerekti. Ama öğrendim.
Oldu fakat şöyle bir sorun oldu. Yarma 11 var Dolgu 11'de var.
Yarmaların başına Y dolguların başına D yazdırdım MESAFE sekmesinde bu sorunu da çözdüm.
Çok teşekkür ederim.
 
Verdiğim kod J sütununa kazı mı dolgu mu olduğunu belirtiyor zaten.
 
J sütununu kullanmadan, sizin çözdüğünüze benzer şekilde (mesafeler tablosuınu değiştirmeden) bulunan kod başına Y veya D harfi eklemek için aşağıdaki kodu kullanabilirsiniz:

PHP:
Sub yol()
Set s1 = Sheets("MESAFE")
Set s2 = Sheets("icm_tp")

son2 = s2.Cells(Rows.Count, "D").End(3).Row
sonb = s1.Cells(Rows.Count, "B").End(3).Row
song = s1.Cells(Rows.Count, "G").End(3).Row
son = WorksheetFunction.Max(sonb, song)
For i = 2 To son2
    For j = 6 To son
        If s2.Cells(i, "D") >= s1.Cells(j, "B") And s2.Cells(i, "D") <= s1.Cells(j, "C") Then
            s2.Cells(i, "C") = "Y" & s1.Cells(j, "A")
            
            GoTo 10
        ElseIf s2.Cells(i, "D") >= s1.Cells(j, "G") And s2.Cells(i, "D") <= s1.Cells(j, "H") Then
            s2.Cells(i, "C") = "D" & s1.Cells(j, "F")
            
            GoTo 10
        End If
    Next
10:
Next
End Sub
 
Geri
Üst