• DİKKAT

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

Evaluate fonksiyon

  • Konbuyu başlatan Konbuyu başlatan heft
  • Başlangıç tarihi Başlangıç tarihi
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
 
Merhaba,

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

.
 
yanlız burada fx e atama yapıyorum makine aslında değişken bir alfanümerik bir kayıt
 
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))")
 
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
 
Selamlar,

#5 nolu mesajımdaki kodu denediniz mi?
 
Selamlar,

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

Ekli dosyalar

İ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
 
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))
 
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:
 
Geri
Üst