Kritere Bağlı Değer bulup getirme

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
Doğrudur formülde sayfa adı belirtmediğimiz için aktif sayfayı dikkate almaktadır. Bu durumu artık eski üyelerimizin ve kod yazmaya başlayan üyelerimizin bilmesi gerekir diye düşünüyorum.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Merhaba, son mesajınızdan sonra şöylesi birşey yaptım. Örnek dosyanın ilk verilerini koruyarak , vba kısmındaki kodları silip sizin verdiğiniz kodu ekledim, ve ürün 1 ya da ürün 2 şeklinde değişiklik yaptığımda sonuç textbox ında garip bir sayı uzantısı görüyorum. Kısaca istediğim sonucu alamamış oldum. sqlçözüm_1 excel dosyası bunu göstermek için.

Ancak excel sayfasındaki verilerden bir kısmını alttan başlayarak sildim , tekrar denedim ve bazı denemeler yaptım, bu sefer aradığım sonuca ulaşmış oldum. sqlçözüm_2 excel dosyası bunu göstermek için.

Ve bunları göstermek için ekran görüntüleri koydum.

Bu, donanım, pc, excel versiyonu yada benzeri bir farklılıktan kaynaklanıyor olabilir mi. Bu farklı sonuçlar hakkında en ufak fikrim yok.
Fiyatları raatgele kopyalayarak çoğalttığım için o hücredeki değeri gösteriyor. Zaten hücrede ondalık sayısını arttıeırsanız aynı sayıyı göreceksiniz.
 

walabi

Altın Üye
Katılım
22 Eylül 2012
Mesajlar
675
Excel Vers. ve Dili
excel 2010

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Doğrudur formülde sayfa adı belirtmediğimiz için aktif sayfayı dikkate almaktadır. Bu durumu artık eski üyelerimizin ve kod yazmaya başlayan üyelerimizin bilmesi gerekir diye düşünüyorum.
Korhan Bey,

Teşekkürler, öncelikle son mesajınıza istinaden sayfa adı Stok şeklinde belirtilerek kodu düzeltebilir misiniz. Ve yine son mesajınıza istinaden, demek istediğinizi anladığımı zannediyorum. Ben yaklaşık 7 yıldır bu portala üyeyim ancak son 5 yıldır excelin vba kısmını kullanmadım. Yaklaşık 7 yıl öncesinden kalma vba bilgilerimle kendimce birşeyler yapmaya çalışıyorum. Buraya herhangi bir mesaj, örnek dosya eklemeden önce araştırmaktayım, aradığımı bulamadığım zaman buraya sormaktayım. Bazen doğru olanı yanlış şekilde aradığımız da olmakta.

Destekleriniz için teşekkürler tekrardan,
 

walabi

Altın Üye
Katılım
22 Eylül 2012
Mesajlar
675
Excel Vers. ve Dili
excel 2010

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Fiyatları raatgele kopyalayarak çoğalttığım için o hücredeki değeri gösteriyor. Zaten hücrede ondalık sayısını arttıeırsanız aynı sayıyı göreceksiniz.

Korhan beyin uyarısından sonra anlamış oldum, hücre değerlerine bakmak aklıma gelmemişti. Korhan beyin yazdığı kod ile çözüm bulmuş oldum sanırım.

Teşekkürler,
 

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
Bir çok üyemiz aynı sıkıntıyı yaşıyor. Bunu gözlemleyebiliyoruz. Excelin temel kavramlarına hakim olmadan proje girişimleri hep aynı şekilde sonuçlanıyor..
 

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
Sayfa adını aşağıdaki gibi ekleyebilirsiniz.

Bu haliyle daha hızlı sonuç verecektir.

C++:
Option Explicit

Private Sub TextBox1_Change()
    Dim S1 As Worksheet, Son As Long, Formul As String
    
    Set S1 = Sheets("Sayfa1")
    
    If TextBox1 <> "" Then
        Set Bul = S1.Range("F:F").Find(TextBox1, , , xlWhole)
        If Not Bul Is Nothing Then
            Son = S1.Cells(S1.Rows.Count, "F").End(3).Row
            Formul = "=INDEX('" & S1.Name & "'!J1:J1048576,MATCH(MAX(IF('" & S1.Name & "'!F1:F1048576=""" & TextBox1 & """,'" & _
                     S1.Name & "'!D1:D1048576))&""" & TextBox1 & """,'" & S1.Name & "'!D1:D1048576&'" & S1.Name & "'!F1:F1048576,0))"
            Formul = Replace(Formul, 1048576, Son)
             
            TextBox15 = Evaluate(Formul)
        Else
            TextBox15 = ""
        End If
    End If

    Set S1 = Nothing
End Sub
 

walabi

Altın Üye
Katılım
22 Eylül 2012
Mesajlar
675
Excel Vers. ve Dili
excel 2010

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Sayfa adını aşağıdaki gibi ekleyebilirsiniz.

Bu haliyle daha hızlı sonuç verecektir.

C++:
Option Explicit

Private Sub TextBox1_Change()
    Dim S1 As Worksheet, Son As Long, Formul As String
   
    Set S1 = Sheets("Sayfa1")
   
    If TextBox1 <> "" Then
        Set Bul = S1.Range("F:F").Find(TextBox1, , , xlWhole)
        If Not Bul Is Nothing Then
            Son = S1.Cells(S1.Rows.Count, "F").End(3).Row
            Formul = "=INDEX('" & S1.Name & "'!J1:J1048576,MATCH(MAX(IF('" & S1.Name & "'!F1:F1048576=""" & TextBox1 & """,'" & _
                     S1.Name & "'!D1:D1048576))&""" & TextBox1 & """,'" & S1.Name & "'!D1:D1048576&'" & S1.Name & "'!F1:F1048576,0))"
            Formul = Replace(Formul, 1048576, Son)
            
            TextBox15 = Evaluate(Formul)
        Else
            TextBox15 = ""
        End If
    End If

    Set S1 = Nothing
End Sub
Korhan Bey,

Son yazdığınız kodu kendi çalışmamda denedim, ilgili userform altındaki tüm kodları sildim, sadece sizin verdiğiniz kodu bıraktım.

Ancak şu satırda

TextBox15 = Evaluate(Formul)

could not set the value şeklinde hata alıyorum.

Verdiğiniz kodu ayrıca nextlevel in örnek dosyasına uyguladım ancak bu sefer çalışıyor.

Hata veren satırın üzerine geldiğimde textbox15 = "" şeklinde boş görünüyor gibi.

Açıkcası daha fazla vaktinizi çalmak istemiyorum bu konu ile ilgili olarak. Ancak bir dosyada çalışan kod bir başka dosyada neden çalışmaz. Asıl dosyadaki diğer userform altındaki kodlar ile ilgili olabilir mi diye saçma düşünce içine girdim. Ya da formül sonucu olarak verilerin olduğu sayfadan ilgili veri bulunup getirilemiyor mu.
 

walabi

Altın Üye
Katılım
22 Eylül 2012
Mesajlar
675
Excel Vers. ve Dili
excel 2010

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Sayfa adını aşağıdaki gibi ekleyebilirsiniz.

Bu haliyle daha hızlı sonuç verecektir.

C++:
Option Explicit

Private Sub TextBox1_Change()
    Dim S1 As Worksheet, Son As Long, Formul As String
   
    Set S1 = Sheets("Sayfa1")
   
    If TextBox1 <> "" Then
        Set Bul = S1.Range("F:F").Find(TextBox1, , , xlWhole)
        If Not Bul Is Nothing Then
            Son = S1.Cells(S1.Rows.Count, "F").End(3).Row
            Formul = "=INDEX('" & S1.Name & "'!J1:J1048576,MATCH(MAX(IF('" & S1.Name & "'!F1:F1048576=""" & TextBox1 & """,'" & _
                     S1.Name & "'!D1:D1048576))&""" & TextBox1 & """,'" & S1.Name & "'!D1:D1048576&'" & S1.Name & "'!F1:F1048576,0))"
            Formul = Replace(Formul, 1048576, Son)
            
            TextBox15 = Evaluate(Formul)
        Else
            TextBox15 = ""
        End If
    End If

    Set S1 = Nothing
End Sub

Korhan Bey, problem örnek dosyada ürün 1 ifadesinin bendeki asıl dosyada sadece sayı olmaından kaynaklanıyormuş anladığım, 1001 şeklinde bir numara girmekteydim, bunu ürün 1 şeklinde değiştirdim ve kendi dosyamda da çalışır duruma geldi.

Teşekkürler yardımlarınız için.
 

walabi

Altın Üye
Katılım
22 Eylül 2012
Mesajlar
675
Excel Vers. ve Dili
excel 2010

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Yararlanabilecek birileri olabilir diye örnek dosyanın son halini ekliyorum.

Herkeze teşekkürler.
 

Ekli dosyalar

Üst