Soru Döngü ile koşullu toplam aldırma

Katılım
23 Şubat 2010
Mesajlar
90
Excel Vers. ve Dili
Excel 2007/ İngilizce
Merhaba,

A sütununda bölge isimleri B sütununda ise verilerin yer aldığı bir Excel var elimde. Bu bölgelere ait toplamları başka bir sayfaya yazdırmak istiyorum; fakat VBA döngüsü ile yapmak istiyorum bunu. Denemeler yaptım ama işin içinden çıkamadım. O yüzden yardımınızı rica edeceğim.

Kısa bir örnek vermek gerekirse: döngü ikinci satırda "Inner Mongolia" ifadesi (araya başka bir bölge ismi girmeden) bitene kadar bu bölgenin toplamını alıp başka bir sayfada önce bölge ismi yan satırına ise toplamı yazıyor.

Bir sonraki döngüde "Shanxi" var. Bu bölgenin toplamını bu bölge ismi bitene kadar alıp diğer sayfaya yazıyor.

Döngü A sütunundaki veri olan en son hücreye kadar devam ediyor.

Not: Excel nereden ekleyebilirim göremiyorum.
 

yanginci34

Altın Üye
Katılım
6 Temmuz 2010
Mesajlar
1,590
Excel Vers. ve Dili
excel2016
Altın Üyelik Bitiş Tarihi
12-10-2026
Örnek dosya eklermisiniz.
 

yanginci34

Altın Üye
Katılım
6 Temmuz 2010
Mesajlar
1,590
Excel Vers. ve Dili
excel2016
Altın Üyelik Bitiş Tarihi
12-10-2026
forma üye değilsiniz dosyanızı buraya ekleyip link ini tekrar burda paylaşın
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.
Bence; en pratik olanı ÖZET TABLO kullanmak olur.
Belgeye, adı ÖZET olan boş bir sayfa ekleyin.

Verilerin bulunduğu tablo alanını seçin,
EKLE=>ÖZET TABLO >> başka sayfaya deyip ÖZET sayfası A1 hücresini seçin,
SATIRLAR alanına Region'u, DEĞERLER alanına da diğer sütun adını sürükleyip bırakın, tamam.

İllede kod kullanacaksanız aşağıdaki gibi olur.
Rich (BB code):
Sub TOPLAMLAR()
Set s = Sheets("Sheet1"): Set o = Sheets("ÖZET")
o.[A1] = s.[A1]: o.[B1] = "TOPLAM"
For sat = 2 To s.Cells(Rows.Count, 1).End(3).Row
    son = sat - 1 + WorksheetFunction.CountIf(s.[A:A], s.Cells(sat, 1))
    o.Cells(o.Cells(Rows.Count, 1).End(3).Row + 1, 1) = s.Cells(son, 1)
    o.Cells(o.Cells(Rows.Count, 2).End(3).Row + 1, 2) = WorksheetFunction.Sum(s.Range("B" & sat & ":B" & son))
    sat = son
Next
End Sub
 
Katılım
23 Şubat 2010
Mesajlar
90
Excel Vers. ve Dili
Excel 2007/ İngilizce
Merhaba.
Bence; en pratik olanı ÖZET TABLO kullanmak olur.
Belgeye, adı ÖZET olan boş bir sayfa ekleyin.

Verilerin bulunduğu tablo alanını seçin,
EKLE=>ÖZET TABLO >> başka sayfaya deyip ÖZET sayfası A1 hücresini seçin,
SATIRLAR alanına Region'u, DEĞERLER alanına da diğer sütun adını sürükleyip bırakın, tamam.

İllede kod kullanacaksanız aşağıdaki gibi olur.
Rich (BB code):
Sub TOPLAMLAR()
Set s = Sheets("Sheet1"): Set o = Sheets("ÖZET")
o.[A1] = s.[A1]: o.[B1] = "TOPLAM"
For sat = 2 To s.Cells(Rows.Count, 1).End(3).Row
    son = sat - 1 + WorksheetFunction.CountIf(s.[A:A], s.Cells(sat, 1))
    o.Cells(o.Cells(Rows.Count, 1).End(3).Row + 1, 1) = s.Cells(son, 1)
    o.Cells(o.Cells(Rows.Count, 2).End(3).Row + 1, 2) = WorksheetFunction.Sum(s.Range("B" & sat & ":B" & son))
    sat = son
Next
End Sub
teşekkürler.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
.
Kolay gelsin.
.
 
Üst