Evaluate fonksiyon

Katılım
3 Haziran 2005
Mesajlar
371
Bir türlü sonuç alamıyorum,neyi yanlış yapıyorum?


Function aylik(makine As Integer)
aylık = Evaluate("=SUMPRODUCT((Sayfa1!F2:F1500 = makine)*(Sayfa1!L2:L1500))")
End Function
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Merhaba,

Kod:
Evaluate("=SUMPRODUCT((Sayfa1!F2:F1500=""makine"")*(Sayfa1!L2:L1500))")
Bu şekilde deneyin.

.
 
Katılım
3 Haziran 2005
Mesajlar
371
yanlız burada fx e atama yapıyorum makine aslında değişken bir alfanümerik bir kayıt
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Sorularınızı örnek dosya ile ve daha açık sorunuz. Değişkenden kastınız ölçütü hücreden almak mı?

Bu şekilde deneyin.


Evaluate("=SUMPRODUCT((Sayfa1!F2:F1500=" & [B1].Address & ")*(Sayfa1!L2:L1500))")
 

Korhan Ayhan

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

Alternatif olarak aşağıdaki şekilde denermisiniz.

Kod:
Option Explicit
 
Function aylik(makine As Range)
    Application.Volatile True
    aylik = Evaluate("=SUMPRODUCT((Sayfa1!F2:F1500=""" & makine & """)*(Sayfa1!L2:L1500))")
End Function
 

Korhan Ayhan

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

#5 nolu mesajımdaki kodu denediniz mi?
 

Korhan Ayhan

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

İlginç bir durum var o zaman. Ben denediğimde çalıştı. Ekteki dosyayı incelermisiniz.
 

Ekli dosyalar

Katılım
3 Haziran 2005
Mesajlar
371
İyi akşamlar
işlemin sonucu bazı hesaplamalarda #DEĞER! sonucu çıkıyor.
Ben bu tip hatalar verdiğinde " " olarak atama yapmasını istiyorum nasıl yapabilirim
 

Korhan Ayhan

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

Eğer fonksiyon sonucunun hatalı değer ürettiği durumlarda sıfır üretmesini isterseniz aşağıdaki şekilde kullanabilirsiniz.

(Sadece son çarpım işareti virgül ile değiştirilmiştir.)
Kod:
Function aylik(makine As Range, donem As Range)
    Application.Volatile True
    aylik = Evaluate("=SUMPRODUCT((Sayfa1!A2:A1500=""" & donem & """)*(Sayfa1!B2:B1500=""" & makine & """),(Sayfa1!C2:C1500))")
End Function

Eğer fonksiyon sonucunun hatalı değer ürettiği durumlarda boş değer üretmesini isterseniz aşağıdaki şekilde kullanabilirsiniz.

Kod:
Function aylik(makine As Range, donem As Range)
    Application.Volatile True
    aylik = Evaluate("=SUMPRODUCT((Sayfa1!A2:A1500=""" & donem & """)*(Sayfa1!B2:B1500=""" & makine & """)*(Sayfa1!C2:C1500))")
    If IsError(aylik) Then aylik = ""
End Function
Yada ikinci alternatif olarak örnek dosyadaki önerdiğim fonksiyonu hücrede aşağıdaki şekilde kullanabilirsiniz.

Kod:
=EĞER(EHATALIYSA(aylik(A1;B1));"";aylik(A1;B1))
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Nedense sumproduct un evulate ile vba da bu şekilde kullanılması benim bir türlü güvenimi kazanamadı.Onun için ben bunu kulanmıyorum.Sakıncalı görüyorum ,güvenilir gelmiyor bana.İçinde string değer olursa sayısal alanda, hatalı sonuç üretiyor.Uzak duruyorum ondan.Onu kullanmam gereken yerlerde Auto filter kullanıp subtotal ile sonuca ulaşıyorum.:cool:
 
Üst