• DİKKAT

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

topla.çarpım formülünü makroya çevirelim.

Katılım
12 Ocak 2009
Mesajlar
838
Excel Vers. ve Dili
2003
Merhaba arkadaşlar.
Combobox3'ün change olayına aşağıdaki formülün aldığı toplamı aldırmak istiyorum.
=TOPLA.ÇARPIM(($C$2:$C$880="AİLE HEKİMİ")*($G$2:$G$880))
"AİLE HEKİMİ" combobox3 te seçilen veri oluyor.
 
Kod:
Private Sub ComboBox3_Change()
' dosya adı sayfa1 girildi siz sizinkini giriniz.
'sonuç a1 hücresine yazdırılıyor. Siz istediğinize yazabilirsiniz.
[COLOR="red"][A1].Value[/COLOR] = WorksheetFunction.SumIf(Sheets("[COLOR="Red"]sayfa1[/COLOR]").Range("c2:c880"), ComboBox3.Text, Sheets("[COLOR="red"]sayfa1[/COLOR]").Range("g2:g880"))

End Sub

Kod bilgim çok iyi değil ama Elimden geldiği kadar yapmaya çalıştım.
Denedim bende çalışıyor.
Umarım iş görür.
 
Kod:
Private Sub ComboBox3_Change()
' dosya adı sayfa1 girildi siz sizinkini giriniz.
'sonuç a1 hücresine yazdırılıyor. Siz istediğinize yazabilirsiniz.
[COLOR="red"][A1].Value[/COLOR] = WorksheetFunction.SumIf(Sheets("[COLOR="Red"]sayfa1[/COLOR]").Range("c2:c880"), ComboBox3.Text, Sheets("[COLOR="red"]sayfa1[/COLOR]").Range("g2:g880"))

End Sub

Kod bilgim çok iyi değil ama Elimden geldiği kadar yapmaya çalıştım.
Denedim bende çalışıyor.
Umarım iş görür.

Arkadaşım teşekkür ederim.
Bende biraz daha zorlayarak şu şekilde çözdüm.
(Bu arada özür: kodun form üzerindeki bir nesnede çalışacağını belirtmemiştim. Amacım kodun mantığını öğrenip uyarlamaktı.)
Kod:
Label2.Caption =WorksheetFunction.SumIf(Sheets("PDC").Range("C2:c65536"), ComboBox3.Value, Sheets("PDC").Range("G2:G65536")) & " KİŞİDİR"

Eğer bilginiz dahilinde ise şu sorunada bir yorum yapmanızı rica ediyorum.
Sayfada formülle "=TOPLA(G2:G880)" işleminin sonucu 1911 çıkıyor.
Bu formülüde makro ile hesaplatınca sadece 911 çıkıyor. Satırlardan bir çoğusu birleştirilmiş durumda ve buralarda da veriler var. Makro ile acaba birleştirilmiş satırlarda okuma hatasımı yapıyor.
Makro:
Kod:
Label10.Caption = WorksheetFunction.Sum(Range("g2:g65536"))

MoX9D9.png
 
Dosyayı görmeden bir şey diyemem ama label10 un userform üzerinde dar tutmuş olabilir misiniz acaba.Sonuç doğrudur belki ama sonucu gösteremiyordur.
 
Kod:
Label10.Caption = WorksheetFunction.Sum([COLOR="Red"]Sheets("PDC").[/COLOR]Range("g2:g65536"))

Bir de bu şekilde deneyin bakalım.Belki sayfa adından kaynaklanıyor olabilir.
 
Deneyiniz.
Kod:
Label10.Caption = WorksheetFunction.SumProduct(("C2:C880")=ComboBox3)*("G2:G880"))
 
Deneyiniz.
Kod:
Label10.Caption = WorksheetFunction.SumProduct(("C2:C880")=ComboBox3)*("G2:G880"))
Hocam label10 veriyi userform'un activate yordamında çalışıyor. Herhangi bir comboyla ilgisi yok.

Yukarıda izah ettiğim gibi sonucu hatalı gösteriyor.

Kod:
Private Sub UserForm_Activate()

Set s = Sheets("PDC")
For i = 2 To s.[a65536].End(3).Row
If WorksheetFunction.CountIf(s.Range("A1:A" & i), s.Cells(i, "A")) = 1 Then
ComboBox1.AddItem s.Cells(i, "A").Value
End If
Next

Set s = Sheets("PDC")
For i = 2 To s.[b65536].End(3).Row
If WorksheetFunction.CountIf(s.Range("B1:B" & i), s.Cells(i, "B")) = 1 Then
ComboBox2.AddItem s.Cells(i, "B").Value
End If
Next

Set s = Sheets("PDC")
For i = 2 To s.[c65536].End(3).Row
If WorksheetFunction.CountIf(s.Range("C1:C" & i), s.Cells(i, "C")) = 1 Then
ComboBox3.AddItem s.Cells(i, "C").Value
End If
Next
Label10.Caption = WorksheetFunction.Sum(Sheets("PDC").Range("g2:g65536"))

End Sub
 
Epey uğraştım ve sonunda label 11 label 10 un üstüne geldiğinden ilk rakamlar görünmüyordu.

Hesaplamada hata yok yani..
 
ComboBox3_Change kodlarının altına:
Kod:
[B][COLOR="Red"]Label12.Caption [/COLOR][/B]= WorksheetFunction.SumIfs(Sheets("PDC").Range("G:G"), Sheets("PDC").Range("C:C"), ComboBox3)

Kırmızılı yere toplamı nerede görmek istiyorsanız onun adı yazılacak.
 
Epey uğraştım ve sonunda label 11 label 10 un üstüne geldiğinden ilk rakamlar görünmüyordu.

Hesaplamada hata yok yani..
Teşekkür ederim hocam. Haklısınız, biraz yaşlılık biraz da dikkatsizlik. Bende gördüm hatayı.

Form açılrkende yaklaşık olarak 10-15 saniyede açılıyor.
Belgede kayıtlı kişi sayısı yaklaşık olarak 2000 kişi var.
Formun açılışını hızlandırmak mümkün mü?
 
Teşekkür ederim hocam. Haklısınız, biraz yaşlılık biraz da dikkatsizlik. Bende gördüm hatayı.

Form açılrkende yaklaşık olarak 10-15 saniyede açılıyor.
Belgede kayıtlı kişi sayısı yaklaşık olarak 2000 kişi var.
Formun açılışını hızlandırmak mümkün mü?

Benim de excelde kullandığım 3500 kişilik asm programım var.Bebekler çocuklar,gebeler,Aşılar, izlemler, yapılacak işlemler vb. baya bir hesaplama işlemi yapılıyor. Hesaplama seçeneklerini otomatik yerine el ile hesaplamayı tercih ettim.Hesaplamayı da VBA ile yaptırıyorum.Ama yine de açılışı 10-15 saniye sürüyor.Ama genel olarak çalışması hızlı.Benim bilgim daha hızlı nasıl çalışır sorusuna bundan başka cevap vermez üzgünüm.Çalışmalarınızda kolaylıklar dilerim.
 
Geri
Üst