• DİKKAT

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

Döngü içinde topla.çarpım kullanım hatası

  • Konbuyu başlatan Konbuyu başlatan HASAN40
  • Başlangıç tarihi Başlangıç tarihi
Katılım
18 Ekim 2010
Mesajlar
215
Excel Vers. ve Dili
Microsoft Excel 03,07
Merhaba,
Değerli uzman arkadaşlarım, topla.çarpım formülünü vba içerisinde bir döngüye ekleyip formül içerisinde de bir değişken kullanmak istiyorum. Soruyu sormadan önce Sn. hamitcan ' ın bu çalışmasını inceledim ama sorunumu çözemedim :( Aşağıdaki kodlardaki hatam nedir acaba?
Şimdiden teşekkürler...
Kod:
 yer = 2
While Sheets("ok").Cells(yer, 18) <> ""
    yer = yer + 2
Wend
    Sheets("ok").Cells(yer, 18) = [sumproduct((Sayfa4!$b$2:$b$76 = sheets("ok").cells(yer,16))*(Sayfa4!$c$2:$c$76 = sheets("ok").cells(yer,17))*(Sayfa4!$a$2:$a$76="G")*(Sayfa4!$d$2:$d$76)]
 
Merhaba,

Bu tarz işlemlerinizde değişkenleri birleştir işleci ile formüle adapte etmelisiniz.

Kod:
Sheets("ok").Cells(yer, 18) = [sumproduct((Sayfa4!$b$2:$b$76 =" & sheets("ok").cells(yer,16) & ")*(Sayfa4!$c$2:$c$76 =" & sheets("ok").cells(yer,17) & ")*(Sayfa4!$a$2:$a$76="G")*(Sayfa4!$d$2:$d$76)]
 
Günaydın Korhan Bey,
Dün akşam maç için bilgisayar başından ayrılmıştım sonra da dönememiştim. Akşam evde olduğumda deneyeceğim, ilginiz için çok teşekkür ederim...
 
Merhaba Korhan Bey,
Çözümünüzü henüz deneyemedim ancak benzer bir çalışmada aşağıdaki kodlar "0" cevabını veriyor, istediğim sonucu alamıyorum. Acaba aşağıdaki kodlardaki hatam nedir?
Kod:
 Private Sub CommandButton1_Click()
        Dim sk As String
        sk = InputBox("Aşağıdaki alana değer girişi yapınız.", "DEĞER", "Değeri giriniz")
        If sk = "Değeri giriniz" Or sk = "" Then
        Exit Sub
        Else
        Sheets(1).Range("ı10") = [sumproduct((VERİ!$b$3:$b$1500=" & sk & ")*(VERİ!$e$3:$e$1500=h10)*(VERİ!$f$3:$f$1500))]
        End If
End Sub
Şimdiden çok teşekkür ederim...
 
Merhaba,

Sizin kullandığınız değişken "String" olarak tanımlanmış. Formül içinde metinsel ifadeler bildiğiniz gibi "...." (çift tırnak) içinde yazılırlar.

Bunu dikkate alarak koddaki formül satırını aşağıdaki gibi düzeltmelisiniz.

Kod:
Sheets(1).Range("ı10") = [sumproduct((VERİ!$b$3:$b$1500=[COLOR=red]""" [/COLOR]& sk & [COLOR=red]"""[/COLOR])*(VERİ!$e$3:$e$1500=h10)*(VERİ!$f$3:$f$1500))]
 
Merhaba Korhan Bey,

Kodları söylediğiniz gibi düzenledim fakat yine 0 sonucunu veriyor ama benim aradığım sonucu vermiyor. Kodlardaki ilk kriterim inputboxa girilen değer, ikinci kriterim ise bir hücre başvurusu olan h10 hücresinin değeridir. :(
 
Merhaba,

Gözümüzden kaçan birşey var. Verdiğiniz linkte Hamitcan bey [] parantez kullanımında değişken tanımlanamadığını açıklamış.

Bu durumda EVALUATE ile olan örnekleri kullanmayı deneyin.

Kod:
Sheets(1).Range("ı10") = Evaluate("=sumproduct((VERİ!$b$3:$b$1500=""" & sk & """)*(VERİ!$e$3:$e$1500=h10)*(VERİ!$f$3:$f$1500))")
 
İyi geceler Korhan Bey,
Evaluate ile yapmaya çalıştım ve aşağıdaki gibi uyarladım, bir hata vermedi ancak istediğim sonucu değil de "0" sonucunu verdi :(
Kod:
 sRangeB = Sheets("Sayfa4").Range("b2:b76").Address
    sRangeC = Sheets("Sayfa4").Range("c2:c76").Address
    sRangeA = Sheets("Sayfa4").Range("a2:a76").Address
    sRangeD = Sheets("Sayfa4").Range("d2:d76").Address
    Criter1 = Sheets("ok").Cells(yer, 16)
    Criter2 = Sheets("ok").Cells(yer, 17)
    Criter3 = "G"
    yer = 2
While Sheets("ok").Cells(yer, 18) <> ""
    yer = yer + 2
Wend
    Sheets("ok").Cells(yer, 18) = Evaluate("=sumproduct((" & sRangeB & " = """ & Criter1 & """)*(" & sRangeC & "=""" & Criter2 & """)*(" & sRangeA & "=""" & Criter3 & """)*(" & sRangeD & "))")
End Sub
Sorun nerede acaba? :/

Not : Korhan Bey, 2. sorumda bu yöntem işe yaradı ve istediğim sonucu verdi. Konuyu açarken ki sorduğum ilk soruda bu yöntemi uyarlayamadım :/
 
Son düzenleme:
Merhaba,

Hasan bey ilk mesajınızda verdiğiniz linkteki son örnekte farklı sayfadan toplam alma işlemi açıklanmış. Bu örnekteki sayfa adı ve aralık tanımlamalarını dikkatli incelerseniz hatanızı anlayacaksınız.

Kod:
sRangeC = [COLOR=red]Sheets("Sayfa4").Range("c2:c76").Address[/COLOR]
 
Günaydın Korhan Bey,
Akşam evde olduğumda çalışmam üzerinde deneyecek ve sonucu bildireceğim. Sanırım tanımlamalarım şu şekilde olacak ;
Kod:
 sRangeA = "Sayfa4!$a$2:$a$76" & s
sRangeB = "Sayfa4!$b$2:$b$76" & s
sRangeC = "Sayfa4!$c$2:$c$76" & s
sRangeD = "Sayfa4!$d$2:$d$76" & s
Peki, Criter1 ve Criter2 yi de aynı şekilde mi tanımlayacağım yani içinde değişken olup olmaması önemli mi?
 
Kriterlerinizin aldığı değer önemlidir. Sorgunuza göre kriterlerinizi zaten sayfa ve hücre adresi belirterek almışsınız. Bir sorun olacağını zannetmiyorum.
 
İyi geceler Korhan Bey,
Evde kullanmış olduğum çalışmamda da kodları kullandım ve sorun olmadı. Çok teşekkür eder, hayırlı geceler dilerim...
 
Merhaba,
Korhan Bey, sorunumu çözdüm fakat çalışmamı geliştirmek ve anlamlaştırmak adına aşağıdaki kod dizisini nasıl döngü içine alabilirim ?
Kod:
Sheets(2).Range("j3") = Evaluate("=sumproduct((" & sRangeB & "=""" & sk & """)*(" & sRangeE & "=trim(g3))*(" & sRangeF & "))")
        Sheets(2).Range("j4") = Evaluate("=sumproduct((" & sRangeB & "=""" & sk & """)*(" & sRangeE & "=trim(g4))*(" & sRangeF & "))")
        Sheets(2).Range("j5") = Evaluate("=sumproduct((" & sRangeB & "=""" & sk & """)*(" & sRangeE & "=trim(g5))*(" & sRangeF & "))")
        Sheets(2).Range("j6") = Evaluate("=sumproduct((" & sRangeB & "=""" & sk & """)*(" & sRangeE & "=trim(g6))*(" & sRangeF & "))")
        Sheets(2).Range("j7") = Evaluate("=sumproduct((" & sRangeB & "=""" & sk & """)*(" & sRangeE & "=trim(g7))*(" & sRangeF & "))")
.
.
.
.
.
.
.
Denediğim döngü ise ;
Kod:
yer1 = 3
        While Sheets("Sayfa1").Cells(yer1, 10) <> ""
            yer1 = yer1 + 1
        Wend
            For k = 3 To [b1000].End(3).Row
                Sheets(2).Cells(yer1, 10) = Evaluate("=sumproduct((" & sRangeB & "=""" & sk & """)*(" & sRangeE & "=trim(cells(yer1,7))*(" & sRangeF & "))")
            Next k
 
Geri
Üst