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

Katılım
19 Mart 2017
Mesajlar
18
Excel Vers. ve Dili
2010
Altın Üyelik Bitiş Tarihi
16-08-2024
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:

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
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)
 
Katılım
19 Mart 2017
Mesajlar
18
Excel Vers. ve Dili
2010
Altın Üyelik Bitiş Tarihi
16-08-2024
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.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
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
 
Katılım
19 Mart 2017
Mesajlar
18
Excel Vers. ve Dili
2010
Altın Üyelik Bitiş Tarihi
16-08-2024
Ö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.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Verdiğim kod J sütununa kazı mı dolgu mu olduğunu belirtiyor zaten.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
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
 
Üst