ToplaÇarpım Hk.

Mdemir63

Altın Üye
Katılım
7 Temmuz 2006
Mesajlar
2,868
Excel Vers. ve Dili
Ofis2010 32Bit Türkçe
Altın Üyelik Bitiş Tarihi
19-02-2026
Selamlar
Arkadaşlar
Aşağıdaki kod satırında ki R2:R10000 aralığı aslında A2:A10000 aralığı ben bunu yardımcı sütunla yaptım.

Yardımcı sütun kullanmadan A2:A10000 aralığını kod içinde metne çevirerek (Ay adı olarak) yapmak istiyorum.
Nasıl yapabilirim?

Saygılar

Kod:
 sonuc = s2.Evaluate("=sumproduct((R2:R10000=Q1)*(B2:B10000=P1)*(C2:C10000))")
 

Ekli dosyalar

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Neden böyle bir uygulamaya ihtiyaç duyduğunuzu anlayamadım. İnputbox kullanarak veri girmek her zaman hataya müsaittir, yazım hataları makronun hata vermesine neden olur. Yerinizde olsam inputbox yerine veri doğrulama ya da listbox/combobox gibi çözümler denerdim.

İlla böyle olsun istiyorsanız R1 hücresinde aşağıdaki formülü kullanır ve makroda da bu hücreden sonuç alabilirsiniz:

=TOPLA.ÇARPIM((METNEÇEVİR(A2:A10000;"aaaa")=Q1)*(B2:B10000=P1)*C2:C10000)

Ya da dosyanızın mevcut halinde aşağıdaki kodları da kullanabilirsiniz:

PHP:
Sub DoluÇerçeve1_Tıklat()
Set s2 = Sheets("veri")
    Sec = InputBox("Ay İsmi Giriniz", "LÜTFEN")
    sec1 = InputBox("Ürün Adı Girinizi", "LÜTFEN")
    If Sec <> "" Then
        s2.Range("Q1") = Sec
    End If
    
    If sec1 <> "" Then
        s2.Range("P1") = sec1
    End If
    Select Case UCase(Replace(Replace(Sec, "ı", "I"), "i", "İ"))
        Case "OCAK": ay = 1
        Case "ŞUBAT": ay = 2
        Case "MART": ay = 3
        Case "NİSAN": ay = 4
        Case "MAYIS": ay = 5
        Case "HAZİRAN": ay = 6
        Case "TEMMUZ": ay = 7
        Case "AĞUSTOS": ay = 8
        Case "EYLÜL": ay = 9
        Case "EKİM": ay = 10
        Case "KASIM": ay = 11
        Case "ARALIK": ay = 12
    End Select
    sonuc = s2.Evaluate("=sumproduct((MONTH(a2:a10000)=" & ay & ")*(B2:B10000=P1)*(C2:C10000))")
    MsgBox s2.Range("Q1") & " Ayında" & vbCrLf & s2.Range("P1") & " Ürününden" & vbCrLf & sonuc & " Adet Satılmıştır.", vbInformation, "BİLGİ MESAJI"
End Sub
 

Mdemir63

Altın Üye
Katılım
7 Temmuz 2006
Mesajlar
2,868
Excel Vers. ve Dili
Ofis2010 32Bit Türkçe
Altın Üyelik Bitiş Tarihi
19-02-2026
Selamlar
@YUSUF44 hocam öncelikle çok teşekkür ederim. Hocam doğruyu söylemek gerekirse Combobox ın Change olayı ile denedim yapamadım.

Saygılar
 

Mdemir63

Altın Üye
Katılım
7 Temmuz 2006
Mesajlar
2,868
Excel Vers. ve Dili
Ofis2010 32Bit Türkçe
Altın Üyelik Bitiş Tarihi
19-02-2026
Selamlar

@YUSUF44 hocam sizin kodlarınızdan yararlanarak Combobox ile yaptım. Çok teşekkür ederim.

Saygılar

Kod:
Set s2 = Sheets("veri")
Set s1 = Sheets("ana")
    Sec = s1.ComboBox1.Value
    sec1 = s1.ComboBox2.Value
    If Sec <> "" Then
        s2.Range("Q1") = Sec
    End If
    
    If sec1 <> "" Then
        s2.Range("P1") = sec1
    End If
    Select Case UCase(Replace(Replace(Sec, "ı", "I"), "i", "İ"))
        Case "OCAK": ay = 1
        Case "ŞUBAT": ay = 2
        Case "MART": ay = 3
        Case "NİSAN": ay = 4
        Case "MAYIS": ay = 5
        Case "HAZİRAN": ay = 6
        Case "TEMMUZ": ay = 7
        Case "AĞUSTOS": ay = 8
        Case "EYLÜL": ay = 9
        Case "EKİM": ay = 10
        Case "KASIM": ay = 11
        Case "ARALIK": ay = 12
    End Select
    sonuc = s2.Evaluate("=sumproduct((MONTH(a2:a10000)=" & ay & ")*(B2:B10000=P1)*(C2:C10000))")
    MsgBox s2.Range("Q1") & " Ayında" & vbCrLf & s2.Range("P1") & " Ürününden" & vbCrLf & sonuc & " Adet Satılmıştır.", vbInformation, "BİLGİ MESAJI"
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Ekli dosyada bir şeyler yapmaya çalıştım. Ben de bu vesileyle sql'de toplam alma özelliğini öğrenmiş oldum :)
 

Ekli dosyalar

Mdemir63

Altın Üye
Katılım
7 Temmuz 2006
Mesajlar
2,868
Excel Vers. ve Dili
Ofis2010 32Bit Türkçe
Altın Üyelik Bitiş Tarihi
19-02-2026
Selamlar

Hocam aslında güzel olmuş ama sanki doğru sonuç vermiyor

Saygılar229645
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Cepten baktığımdan kontrol edemem. Listbox change kodlarında if sorgusunu eksik yaptım muhtemelen. Sabah düzeltirim inşallah.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Yanlış hatırlamıyorsam şöyle düzeltebilirsiniz:

İf sorgusunda Total=0 ya da Total>0 diye sorgulamıştım. Orda Total yerine rs.fields("Total") yazarak deneyin.
 

Mdemir63

Altın Üye
Katılım
7 Temmuz 2006
Mesajlar
2,868
Excel Vers. ve Dili
Ofis2010 32Bit Türkçe
Altın Üyelik Bitiş Tarihi
19-02-2026
Selamlar
Hocam dediğiniz yeri değiştirdim düzeldi.
teşekkür ederim. Elinize sağlık

Saygılar
 

Mdemir63

Altın Üye
Katılım
7 Temmuz 2006
Mesajlar
2,868
Excel Vers. ve Dili
Ofis2010 32Bit Türkçe
Altın Üyelik Bitiş Tarihi
19-02-2026
Selamlar

@YUSUF44 Hocam resimdeki hatayı verdi.

Saygılar229658
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Bende öyle bir hata vermiyor. Dosyada değişiklik yaptınız mı? Yaptıysanız hatalı haliyle paylaşır mısınız?
 

Mdemir63

Altın Üye
Katılım
7 Temmuz 2006
Mesajlar
2,868
Excel Vers. ve Dili
Ofis2010 32Bit Türkçe
Altın Üyelik Bitiş Tarihi
19-02-2026
Selamlar
Hocam hiçbir değişiklik yapmadım. veri sayfası Tarih kısmında olmayan bir ay seçildiğinde yapıyor.
Listedeki 7 ve 8. ayları seçtiğimde hata vermiyor.

Saygılar
 

Ekli dosyalar

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Yanlış hatırlamıyorsam şöyle düzeltebilirsiniz:

İf sorgusunda Total=0 ya da Total>0 diye sorgulamıştım. Orda Total yerine rs.fields("Total") yazarak deneyin.
Selamlar
Hocam hiçbir değişiklik yapmadım. veri sayfası Tarih kısmında olmayan bir ay seçildiğinde yapıyor.
Listedeki 7 ve 8. ayları seçtiğimde hata vermiyor.

Saygılar
Ben Total yerine rs.fields("Total") yazın demiştim ama siz Total>0 yerine yapmışsınız yani >0 kısmını silmişsiniz.
 

Mdemir63

Altın Üye
Katılım
7 Temmuz 2006
Mesajlar
2,868
Excel Vers. ve Dili
Ofis2010 32Bit Türkçe
Altın Üyelik Bitiş Tarihi
19-02-2026
Selamlar

Evet hocam şimdi dediğiniz şekilde düzelttim hata vermedi .
Çok teşekkür ederim.

Saygılar
 
Üst