Bu dosya, ÇokEtopla (SUMIFS) işlemini formül yerine VBA ve Scripting Dictionary nesnesiyle yapan bir örnek çalışmadır. Büyük veri listelerinde hesap koduna ve tarih aralığına göre toplam almak için kullanılır; hesaplama dizi üzerinde yapıldığından formül tabanlı çözümlere göre hızlı çalışır.
Dosya makro içerir, açarken makroları etkinleştirmeniz gerekir.
Dosya makro içerir, açarken makroları etkinleştirmeniz gerekir.
Dosyanın içeriği
- Sayfa1: Sonuç sayfasıdır. A4 hücresinden itibaren 101, 102, 103 gibi hesap kodları listelenir. Tarih aralığı C1 (başlangıç) ve D1 (bitiş) hücrelerinden okunur; C4 hücresinden başlayan "Veri Gelecek" sütununa hesaplanan toplamlar yazılır.
- Sayfa2: Kaynak veri sayfasıdır. A3:C8137 aralığında, 4. satırdan itibaren hesap kodu (A), tarih (B) ve tutar (C) bilgileri bulunur.
Makrolar
- cokEtopla (Module1): Önce Sayfa1 üzerindeki C4 ve altındaki eski sonuçları temizler. Sayfa2'deki A4:C sütunlarını belleğe alır ve her satırın tarihini C1 ile D1 arasında olup olmadığına göre kontrol eder. Aralığa giren satırların tutarlarını hesap koduna göre Dictionary içinde biriktirir. Ardından Sayfa1'deki A sütunundaki her hesap kodunun toplamını Dictionary'den alıp C sütununa tek seferde yazar. İşlem bitince geçen süreyi gösteren bir "işlem tamam" mesajı verilir.
- Kodda dosya silme, dışarıya bağlantı gibi zararlı bir işlem bulunmaz; makro yalnızca iki sayfa üzerinde çalışır.
Nasıl kullanılır
- Dosyayı açıp makroları etkinleştirin.
- Sayfa2'ye hesap kodu, tarih ve tutar verilerini 4. satırdan itibaren girin.
- Sayfa1'in A sütununa toplamı alınacak hesap kodlarını, C1 ve D1 hücrelerine başlangıç ve bitiş tarihlerini yazın.
- Alt+F8 ile cokEtopla makrosunu çalıştırın.
- Sonuçlar Sayfa1'de C4 hücresinden itibaren listelenir; tarih aralığını değiştirip makroyu yeniden çalıştırabilirsiniz.