Excel Formül
Modül 5: İleri Düzey Veri İşleme ve Raporlama

Dictionary Nesnesi ile Benzersiz Sayma

Büyük ölçekli veri tabanlarında veya Excel dosyalarında "Hangi üründen toplam kaç adet satıldı?" ya da "Tekil müşteri sayısı kaçtır?" sorularını yanıtlamak için Scripting.Dictionary (Sözlük) nesnesi kullanılır. Standart döngülere göre devasa bir hız avantajı sağlar.

Dictionary (Sözlük) Mantığı Nasıl Çalışır?

Gerçek hayattaki bir sözlük gibi düşünün: Her kelimenin (Key) karşılığında bir açıklama veya sayı (Item) vardır. Excel'de bir veriyle ilk kez karşılaşıldığında sözlüğe eklenir ve değeri 1 yapılır. Aynı veri tekrar karşımıza çıktığında ise mevcut değer 1 arttırılır. Böylece hem benzersiz liste elde edilir hem de kaç kez tekrar ettiği (frekansı) anında hesaplanır.

Örnek Dictionary Kod Kalıbı

Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")

' Veri sözlükte yoksa ekle, varsa sayısını 1 arttır
If Not dict.exists(veri) Then
    dict.Add veri, 1
Else
    dict(veri) = dict(veri) + 1
End If

Canlı Simülatör: Ürün Adedi Sayma Raporu

Aşağıdaki ham listede tekrar eden ürünler ("Laptop", "Mouse"...) yer almaktadır. Makro, Dictionary nesnesini kullanarak her üründen kaçar adet olduğunu hesaplayacak ve B ile C sütunlarına raporlayacaktır. Kodu Çalıştır butonuna basın.

Visual Basic Editörü
Module1 (Code)
Sub UrunleriSay()
    Dim dict As Object, i As Integer, urun As String
    Set dict = CreateObject("Scripting.Dictionary")

    For i = 1 To 5
        urun = Cells(i, 1).Value
        If Not dict.exists(urun) Then
            dict.Add urun, 1
        Else
            dict(urun) = dict(urun) + 1
        End If
    Next i

    MsgBox "Dictionary ile frekans analizi tamamlandı!", vbInformation
End Sub
Canlı Excel Sayfası
B1
A (Ham Liste)
B (Benzersiz Ürün)
C (Adet)
1
Laptop
2
Mouse
3
Laptop
4
Klavye
5
Mouse
Microsoft Excel ✕
Dictionary ile frekans analizi tamamlandı!