• DİKKAT

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

Toplam Tutar-String'i değerlendirme

Katılım
31 Ocak 2014
Mesajlar
7
Excel Vers. ve Dili
ingilizce
Merhabalar,

Şöyle bir işlemi nasıl gerçekleştiririm? Desteğinizi rica ederim.

Bir liste var. Kolon B de evet veya hayır yazılıdır.

Eğer kolon b de evet yazıyorsa, C kolonunda bulunan tutarları toplar ve A1 e toplam tutarı yazar.

eğer kolon b de "hayır" yazıyorsa,C kolonuna bulunan toplam tutarı toplar ve B1'e toplam tutarı yazar.

Amaç tüm excel de bulunan evet ve hayır ların toplam tutarını hesaplamak
 
Özet tabloyu deneyiniz.
 
. . .

Hayırların toplamını B1' e mi yazacak yinede ?

. .
 
. . .

Yeni bir modül ekleyip, aşağıdaki kodları yapıştırın.

Kod:
Sub kod()

    E = WorksheetFunction.SumIf(Range("B:B"), "Evet", Range("C:C"))
    H = WorksheetFunction.SumIf(Range("B:B"), "Hayır", Range("C:C"))
    Range("A1") = E
    Range("B1") = H

End Sub

. . .
 
su anda sorunu cozdum. Son olarak sunu nasıl yaparım acaba? Tabloda ornegin evet yazdıgımda otomatik olarak toplama eklenmesi. Su anda run sub yaptıgımda degisiyor
 
su anda sorunu cozdum. Son olarak sunu nasıl yaparım acaba? Tabloda ornegin evet yazdıgımda otomatik olarak toplama eklenmesi. Su anda run sub yaptıgımda degisiyor
. . .

Şöyle bir örnek tablomuz olsun.

ekv4mr.jpg


Yukarıdaki kodları ilk çalıştırdığınızda Sonuçlar
E: 7
H: 14

B1 deki Evet/Hayır verisini sildiğimiz için

İkinci kez çalıştırdığınızda Sonuçlar
E: 6
H: 14

olacaktır. Farkındasınız değil mi ?

. . .
 
evet dogru calisiyor. Farkindayim. tam olarak bunu istiyorum .yani macronun otomatik olarak bir hücreyi degistigimde bu makro otomatik olarak tekrar calisması amacım
 
. . .

Çalışma sayfasının kod bölümüne yapıştırın.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim E      As Variant
    Dim H      As Variant
    On Error Resume Next
    Application.EnableEvents = False

    If Intersect(Target, [B1:C65536]) Is Nothing Then Exit Sub

    E = WorksheetFunction.SumIf(Range("B:B"), "Evet", Range("C:C"))
    H = WorksheetFunction.SumIf(Range("B:B"), "Hayır", Range("C:C"))
    Range("A1") = E
    Range("B1") = H

    Application.EnableEvents = True
End Sub

Formüller ile yapmak isterseniz.
A1 için
Kod:
=ETOPLA(B2:B65536;"Evet";C2:C65536)

B1 için
Kod:
=ETOPLA(B2:B65536;"Hayır";C2:C65536)

. . .
 
. . .

Çalışma sayfasının kod bölümüne yapıştırın.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim E      As Variant
    Dim H      As Variant
    On Error Resume Next
    Application.EnableEvents = False

    If Intersect(Target, [B1:C65536]) Is Nothing Then Exit Sub

    E = WorksheetFunction.SumIf(Range("B:B"), "Evet", Range("C:C"))
    H = WorksheetFunction.SumIf(Range("B:B"), "Hayır", Range("C:C"))
    Range("A1") = E
    Range("B1") = H

    Application.EnableEvents = True
End Sub

Formüller ile yapmak isterseniz.
A1 için
Kod:
=ETOPLA(B2:B65536;"Evet";C2:C65536)

B1 için
Kod:
=ETOPLA(B2:B65536;"Hayır";C2:C65536)

. . .

toplama islemini onceden verdiginiz komutlarla gerceklestirmistim. Cell de bir degisklik oldugunda otomatik diger yazdıgınız komutların calısması için ne yapmak gerek?
 
. . .

Call Makroİsmi

. . .
 
Geri
Üst