• DİKKAT

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

İki kritere göre başka sayfadan veri alma

Katılım
25 Eylül 2006
Mesajlar
611
Excel Vers. ve Dili
Windows-XP_TR
Ofis-2003_TR
Merhaba,
Ekli dosyamda başka sayfadan veri almak istiyorum.Yalnız bunun makro ile olması gerekiyor.İlgilenen arkadaşlara şimdiden teşekkürler.
 

Ekli dosyalar

Selamlar,

Bunun için makroya gerek olduğunu düşünmüyorum. Formülle rahatlıkla bu veriyi alabilirsiniz. Aşağıdaki formülü J2 hücresine uygulayıp denermisiniz.

Kod:
=İNDİS(maliyetler!$A:$G;KAÇINCI(J$1;maliyetler!$A:$A;0);KAÇINCI($A2;maliyetler!$1:$1;0))
 
Sn.Korhan Ayhan,
İlginize teşekkür ediyorum.Ama dosya ebatı bu kadar küçük değil.Doğal olarak hesaplamalarda büyük zaman kayıpları ve sıkıntı oluyor.Bu nedenle makrolu bir çözüm arıyorum.
 
Selamlar,

Aşağıdaki kodu sayfanın kod bölümüne uygulayıp denermisiniz. Hangi durumda hesaplama yapılacağını belirtmediğiniz için ben "A" sütununa tarih girdikçe otomatik olarak hesaplama yapacak şekilde ayarladım. Gerekiyorsa değiştirebiliriz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Son
    If Intersect(Target, [A2:A65536]) Is Nothing Then Exit Sub
    If Target <> Empty Then
    Target.Offset(0, 9) = Evaluate("=INDEX(maliyetler!A:G,MATCH(J1,maliyetler!A:A,0),MATCH(" & Target.Address & ",maliyetler!1:1,0))")
    Target.Offset(0, 10) = Evaluate("=INDEX(maliyetler!A:G,MATCH(K1,maliyetler!A:A,0),MATCH(" & Target.Address & ",maliyetler!1:1,0))")
    Target.Offset(0, 11) = Evaluate("=INDEX(maliyetler!A:G,MATCH(L1,maliyetler!A:A,0),MATCH(" & Target.Address & ",maliyetler!1:1,0))")
    Target.Offset(0, 12) = Evaluate("=INDEX(maliyetler!A:G,MATCH(M1,maliyetler!A:A,0),MATCH(" & Target.Address & ",maliyetler!1:1,0))")
    Else
    Range("J" & Target.Row, "M" & Target.Row).ClearContents
    End If
Son:
End Sub
 
Üstadım küçük bir aksaklık var dosyamda, o da şu:
Fiyatlar kısmına tarihleri el ile değil de formül ile giriyorum.Bu durumda makro çalışmıyor.Buna bir çözüm bulabilirmiyiz?
 
Ben bu makronun otomatik çalışmasını rica etmiştim ama sıkıntı olacaksa butona da atayabilirim.Dediğim gibi yeterki tarihleri tanısın üstadım.Tarih satırında ya tarih oluyor ya da boş ("").
 
Selamlar,

Sn. tekintek,

Makroların otomatik çalışması için tetiklenmesi gerekir. Bende tarihi elle girersiniz düşünce ile "A" sütununu değişken olarak kullandım. Bu durumda sayfa aktif olduğunda çalışacak şekilde kodu düzenleyebiliriz.
 
Çok memnun olurum üstad..Zahmet olacak ama,lütfen kusura bakmayın.
 
Selamlar,

Aşağıdaki kodu sayfanın kod bölümüne uygulayıp denermisiniz. "fiyatlar" sayfası aktif olduğunda size onaylama sorusu sorar, evet derseniz hesaplamalar yenilenir.

Kod:
Private Sub Worksheet_Activate()
    Dim Satır As Long
    On Error GoTo Son
    If MsgBox("Hesaplamalar yeniden yapılsın mı?", vbYesNo + vbExclamation) = vbYes Then
    Satır = Range("A65536").End(3).Row
    Range("J2") = "=IF(ISERROR(INDEX(maliyetler!$A:$G,MATCH(J$1,maliyetler!$A:$A,0),MATCH($A2,maliyetler!$1:$1,0))),"""",INDEX(maliyetler!$A:$G,MATCH(J$1,maliyetler!$A:$A,0),MATCH($A2,maliyetler!$1:$1,0)))"
    Range("K2") = "=IF(ISERROR(INDEX(maliyetler!$A:$G,MATCH(K$1,maliyetler!$A:$A,0),MATCH($A2,maliyetler!$1:$1,0))),"""",INDEX(maliyetler!$A:$G,MATCH(K$1,maliyetler!$A:$A,0),MATCH($A2,maliyetler!$1:$1,0)))"
    Range("L2") = "=IF(ISERROR(INDEX(maliyetler!$A:$G,MATCH(L$1,maliyetler!$A:$A,0),MATCH($A2,maliyetler!$1:$1,0))),"""",INDEX(maliyetler!$A:$G,MATCH(L$1,maliyetler!$A:$A,0),MATCH($A2,maliyetler!$1:$1,0)))"
    Range("M2") = "=IF(ISERROR(INDEX(maliyetler!$A:$G,MATCH(M$1,maliyetler!$A:$A,0),MATCH($A2,maliyetler!$1:$1,0))),"""",INDEX(maliyetler!$A:$G,MATCH(M$1,maliyetler!$A:$A,0),MATCH($A2,maliyetler!$1:$1,0)))"
    Range("J2:M2").AutoFill Destination:=Range("J2:M" & Satır), Type:=xlFillDefault
    Range("J2:M" & Satır).Value = Range("J2:M" & Satır).Value
    MsgBox "Hesaplama işlemi tamamlanmıştır.", vbInformation
    End If
Son:
End Sub
 
Tamamdır,sonsuz teşekkürler zahmetiniz için..
Esenkalın
 
Geri
Üst