İçeriğe geç

excel vba sumifs çoketopla işlemi yapma.

excel vba sumifs çoketopla işlemi yapma.

Kendim için düzenlediğim kodu paylaşmak istiyorum. Excel sürekli kullanıyorum fakat vba kısmına ilk defa giriyorum. Çok keyifli olduğunu söyleyebilirim. Ben kodları açıklayarak gideceğim.

For i = 5 To 300 =>

300 satırlık ürün listem var ve 5. sütundan başlayıp 300’üncü satırdı bitiyor.  for döngüsünü buna göre kurdum.

For y = 3 To 12=>

daha sonra 3. sütundan başlayıp 12’nci sütüna kadar giden bir başka filtreleme seçeneğim mevcut. Burada amaç ürünlerin sütun başlıklarındaki bilgiye göre de filtreleme yapmak.

hafta1tarih1 = Cells(3, y)

Tarihe göre filtreleme yapmak istediğim için hücrenin 3. satırından itibaren y kadar yani 12’nci satıra kadar gittiğini belirtiyorum.

hafta1tarih2 = Cells(4, y)

Yine aynı şekilde belirli bir tarih aralığı belirleyerek sumifs çoketopla işlemi yapacağımdan 4. satırdan y sütununa kadar yani 12. sütuna kadar giden bilgiyi vurguluyorum.

Cells(i, y) =>

cells ile hücreyi belirtiyoruz. burada aslında şunu diyorum. “For i = 5 To 300″ –  ” For y = 3 To 12″ yani 5.satırdan başlayıp 300’üncü satıra kadar , 3. sütundan başlayıp 12’nci sütuna kadar sen bu işlemi yapacaksın. Başlangıç ve bitiş hücrelerini işaret etmiş oluyoruz.

Application.WorksheetFunction.SumIfs =>

Bu SumIfs(çoketopla) formülünün uygulatma şekli. Vba sistemi sizin yazdığın bu kod parçacığı sayesinde SumIfs(çoketopla) işlemini yapacağınızı biliyor ve daha sonra sizden buna göre değerler istiyor.

Sheets(“SHR”).Range(“K:K”) =>

Burada Sheets ile hangi excel sayfasından veri çekeceğimizi Range ile de bu excel sayfasının hangi sütunundaki verileri çekeceğimizi belirliyoruz. SumIfs(çoketopla) işleminde formülün doğası gereği ilk önce toplanmak istenilen değerleri içeren  sütün belirtilir. Burada dikkat edilmesi gereken Sheets(“SHR”) benim SHR isminde bir excel sayfam var ve ben buradan veri çekeceğim. Sayfa ismini doğru yazmamız çok önemli. Yoksa SumIfs(çoketopla) işlemi hatalı olacaktır. Sizde yazdığınız kodda hata arayıp duracaksınız.

Sheets(“SHR”).Range(“A:A”) =>

Toplanacak sütunu belirttikten sonra SumIfs(çoketopla) bir sonraki aşamada bizden hangi kritere göre bu toplama işlemi yapacağını soruyor. Benim Sheets(“SHR”).Range(“A:A”) sütunumda benzersiz kodlarım var ve ben bunlara göre filtreleme yaparak toplama işlemini yaptıracağım.

Cells(i, 1) =>

Daha sonra SumIfs(çoketopla) benden filtrelenecek kriterimi soruyor. Benim toplamda 300 satıra yakın benzersin kodlarımı içeren elemanlarım var. Burada her elemanı tek tek belirtmek için yine Cells(i, 1)  diyerek i yani 5. satırı, 1 de 1. sütunu işaret ediyor. Benim 1. sütunum yani A:A sütunum bu benzersiz kodları içeriyor. Filtreleme işlemini de bu sütundaki kodlara göre yapacağım için burayı işaret ediyorum. Sizin kaçıncı sütunda filtrelemek istediğiniz veriler varsa orayı işaret ediniz.

Sheets(“SHR”).Range(“C:C”), “>=” & CDbl(CDate(hafta1tarih1)), Sheets(“SHR”).Range(“C:C”), “<=” & CDbl(CDate(hafta1tarih2)))   =>

Daha sonra ben belirli bir tarih aralığına göre bu toplama işlemini yapacağım için daha önceden belirtmiş olduğum hafta1tarih1 ve hafta1tarih2 değerlerini CDbl(CDate() olarak veriyorum. Tarih işlemi olduğun için CDbl(CDate() belirtmem gerekiyor. Benim C:C sütununda tarihlerim bulunduğu için  Sheets(“SHR”).Range(“C:C”) olarak belirttim. Burada dikkat edilecek  bir husus daha var. “>=” &  “<=” & bu iki arkadaşın olayı şu. 1. tarihten büyük yada eşit, 2. tarihten küçük yada eşit. Belirli bir tarih aralığını alacağımdan dolayı bu şekilde belirtmem gerekiyor. Siz istediğiniz şekilde bunu uyarlayabilirsiniz.

Next i => Döngü içerisinde sonlanana kadar i nin devam etmesini istiyorum.
Next y =>  Döngü içerisinde sonlanana kadar y nin devam etmesini istiyorum.

Tarih:Excel