Makro ile Koşullu Toplam Aldırmak

Katılım
13 Şubat 2009
Mesajlar
289
Excel Vers. ve Dili
office 2003
Merhaba ;

Sayfada belli koşullara göre toplam aldırmam gerekiyor ama bunu formülle değilde makro ile yapmak istiyorum.

Sayfa1 deki verilerden A sütununda borç yazanların F sütununda toplam
yazanların bakiyesini almak istiyorum,ayrıca aynı soruda üçüncü bir koşul daha
ekleyerek A sütununda borç yazanların B sütununda cari koduna bakarak
F sütunundaki toplam bakiyesini aldırmak istiyorum.

Saygılar
 

Ekli dosyalar

Korhan Ayhan

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

1. Sorunuz için aşağıdaki kodu denermisiniz.

Kod:
Option Explicit
 
Sub BİR_KRİTERE_GÖRE_TOPLA()
    Sheets("Sayfa2").Range("A5") = WorksheetFunction.SumIf([Sayfa1!A:A], "BORC", [Sayfa1!F:F])
    Sheets("Sayfa2").Range("A6") = WorksheetFunction.SumIf([Sayfa1!A:A], "ALACAK", [Sayfa1!F:F])
End Sub

2. Sorunuz için aşağıdaki kodu denermisiniz.

Kod:
Option Explicit
 
Sub İKİ_KRİTERE_GÖRE_TOPLA()
    Sheets("Sayfa2").Range("C5") = Evaluate("=SUMPRODUCT((Sayfa1!A2:A65536=""BORC"")*(Sayfa1!B2:B65536=100)*(Sayfa1!F2:F65536))")
End Sub
 
Katılım
13 Şubat 2009
Mesajlar
289
Excel Vers. ve Dili
office 2003
Koşulda ufak bir detaya daha ihtiyacımız var ;

Aynı toplamları ay ve yıl koşuluna göre makro ile almamız gerekiyor.

Saygılar
 

Ekli dosyalar

Korhan Ayhan

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

Aylarla ilgili tablonuzu Sayfa2 de A2 hücresinden itibaren oluşturun ve aşağıdaki kodu çalıştırın.

Kod:
Option Explicit
 
Sub TARİHE_VE_YILA_GÖRE_TOPLA()
    With Sheets("Sayfa2").Range("B2:B14")
        .Formula = "=SUMPRODUCT((Sayfa1!A[COLOR=red]$[/COLOR]2:A[COLOR=#ff0000]$[/COLOR]10000=""BORC"")*(MONTH(Sayfa1!G[COLOR=#ff0000]$[/COLOR]2:G[COLOR=#ff0000]$[/COLOR]10000)=MONTH(A2))*(YEAR(Sayfa1!G[COLOR=#ff0000]$[/COLOR]2:G[COLOR=#ff0000]$[/COLOR]10000)=YEAR(A2))*(Sayfa1!F[COLOR=#ff0000]$[/COLOR]2:F[COLOR=#ff0000]$[/COLOR]10000))"
        .Value = .Value
    End With
End Sub
 
Katılım
13 Şubat 2009
Mesajlar
289
Excel Vers. ve Dili
office 2003
Formülü kendi tabloma uyguluyorum ama nedense eksik topluyor,acaba fazla veri olduğundanmı yoksa başka sebebimi var.
 

Ekli dosyalar

Korhan Ayhan

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

$ (dolar) işaretini eklemediğimiz için eksik hesaplama oluyor.
#5 nolu mesajımdaki kodu düzenledim. İncelermisiniz.
 
Katılım
13 Şubat 2009
Mesajlar
289
Excel Vers. ve Dili
office 2003
Selamlar,

Aylarla ilgili tablonuzu Sayfa2 de A2 hücresinden itibaren oluşturun ve aşağıdaki kodu çalıştırın.

Kod:
Option Explicit
 
Sub TARİHE_VE_YILA_GÖRE_TOPLA()
    With Sheets("Sayfa2").Range("B2:B14")
        .Formula = "=SUMPRODUCT((Sayfa1!A[COLOR=red]$[/COLOR]2:A[COLOR=#ff0000]$[/COLOR]10000=""BORC"")*(MONTH(Sayfa1!G[COLOR=#ff0000]$[/COLOR]2:G[COLOR=#ff0000]$[/COLOR]10000)=MONTH(A2))*(YEAR(Sayfa1!G[COLOR=#ff0000]$[/COLOR]2:G[COLOR=#ff0000]$[/COLOR]10000)=YEAR(A2))*(Sayfa1!F[COLOR=#ff0000]$[/COLOR]2:F[COLOR=#ff0000]$[/COLOR]10000))"
        .Value = .Value
    End With
End Sub
Teşekkür Ederim ,

Yalnız bir detay daha sorabilimiyim ;
Koşulda, "borç" yazıyor bunun yanına bir koşul daha ekleyebilirmiyiz ;

""borç ve iade" gibi. Aynı sütun içinde iki koşul.

Saygılar
 
Son düzenleme:

Korhan Ayhan

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

Aşağıdaki şekilde kullanabilirsiniz.

Kod:
Option Explicit
 
Sub TARİHE_VE_YILA_GÖRE_TOPLA()
    With Sheets("Sayfa2").Range("B3:B74")
        .Formula = "=SUMPRODUCT(((Sayfa1!C$2:C$40000=""BORC"")+(Sayfa1!C$2:C$40000=""İADE""))*(MONTH(Sayfa1!D$2:D$40000)=MONTH(A3))*(YEAR(Sayfa1!D$2:D$40000)=YEAR(A3))*(Sayfa1!H$2:H$40000))"
        .Value = .Value
    End With
End Sub
 
Katılım
13 Şubat 2009
Mesajlar
289
Excel Vers. ve Dili
office 2003
Selamlar,

Aşağıdaki şekilde kullanabilirsiniz.

Kod:
Option Explicit
 
Sub TARİHE_VE_YILA_GÖRE_TOPLA()
    With Sheets("Sayfa2").Range("B3:B74")
        .Formula = "=SUMPRODUCT(((Sayfa1!C$2:C$40000=""BORC"")+(Sayfa1!C$2:C$40000=""İADE""))*(MONTH(Sayfa1!D$2:D$40000)=MONTH(A3))*(YEAR(Sayfa1!D$2:D$40000)=YEAR(A3))*(Sayfa1!H$2:H$40000))"
        .Value = .Value
    End With
End Sub

Korhan Bey,Affınıza sığınarak bir soru daha soracağım ;

Bu hesaplamayı yaparken farklı bir koşula daha ihtiyacım oldu.

Şöyle ki ;

Formüldeki koşulların dışında bir sütundada portföy no olan numaralar var,
bu numaralar içinde mükerrer olanlar var birde mükerrer olmayanlar var,

Örnek 000012 nolu satırdan üçtan ver ama 000015 nolu satırdan bir adet var
burda förmül tek olan numaraları koşula ekleyip hesaplamaya tabi tutabilirmi.

Saygılar
 

Korhan Ayhan

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

Örnek dosyanız üzerinde hücre adresleri vererek olması gereken sonucu yazarsanız makroyu ona göre düzenleyebiliriz.
 

Korhan Ayhan

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

Örnek dosyanıza göre "00000012" nolu portföye ait 11. AY toplamında herhangi bir değer çıkması gerekiyor mu? Çünkü bu numaralı portföy listede 3 kez tekrarlanmış.
 
Katılım
13 Şubat 2009
Mesajlar
289
Excel Vers. ve Dili
office 2003
Selamlar,

Örnek dosyanıza göre "00000012" nolu portföye ait 11. AY toplamında herhangi bir değer çıkması gerekiyor mu? Çünkü bu numaralı portföy listede 3 kez tekrarlanmış.
Pardon yanlış yazmış olabilirim ;

Tekrarlanmayan portföy nolarının toplamına ihtiyacım var.

Saygılar
 

Korhan Ayhan

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

Sayfa2 de A2 hücresinden itibaren tarihlerinizi yazın ve aşağıdaki kodu çalıştırın. Eğer hücre aralığını fazla verirseniz kilitlenme yaşayabilirsiniz. Ben 1.000 satır olarak formülü kurguladım. Eğer yardımcı bir sütun kullanıp ilk olarak portföy nolarını saydırırsak biraz daha hızlı sonuca gitmek mümkün olabilir. Tabiki veri sayınız çoksa bu da dosyanızın boyutunun şişmesine sebep olacaktır.

Kod:
Option Explicit
 
Sub ÜÇ_KRİTERE_GÖRE_TOPLA()
    With Sheets("Sayfa2").Range("B2:B" & Sheets("Sayfa2").Range("A65536").End(3).Row)
        .Formula = "=SUMPRODUCT((COUNTIF(Sayfa1!A$2:A$1000,Sayfa1!A$2:A$1000)=1)*(Sayfa1!F$2:F$1000=""Müsteri Çeki"")*(MONTH(Sayfa1!B$2:B$1000)=MONTH(A2))*(YEAR(Sayfa1!B$2:B$1000)=YEAR(A2))*(Sayfa1!E$2:E$1000))"
        .Value = .Value
    End With
End Sub
 
Katılım
13 Şubat 2009
Mesajlar
289
Excel Vers. ve Dili
office 2003
Teşekkür Ederim.

Saygılar
 
Üst