Excel VBA CountIf işlevi, belirli bir koşul veya ölçütü karşılayan bir aralıktaki hücre sayısını sayar. Excel çalışma sayfası işlevi COUNTIF'e benzer, ancak VBA kodunda hesaplamalar yapmak ve verileri programatik olarak işlemek için kullanılır.
Bir sütundaki elma sayısını bulmanız gereken bir örneği ele alalım. Bu, aşağıda görüldüğü gibi VBA CountIf aralık değişkenini uygulayarak yapılabilir:


Bu örnek, tabloda bulunan Elma sayısını Hemen sekmesinde yazdırır.

- VBA'daki COUNTIF, Excel'de VBA kodu aracılığıyla belirli ölçütleri karşılayan hücreleri saymak için kullanılır.
- Application.WorksheetFunction nesnesi aracılığıyla erişilir.
- COUNTIF iki bağımsız değişken alır: değerlendirilecek hücre aralığı ve uygulanacak ölçüt.
- Programlı olarak hesaplamalar ve veri manipülasyonları yapılmasına olanak sağlar.
- VBA'daki COUNTIF, VBA makroları içinde veri analizini ve işlemeyi otomatikleştirmek için kullanışlıdır.
VBA CountIf'in sözdizimi
VBA'da CountIf fonksiyonunun sözdizimi aşağıdaki gibidir:
Application.WorksheetFunction.CountIf(range, criteria)
Nerede:
- Range, oluşumları saymak istediğiniz hücre aralığıdır.
- Criteria, hücrelerin sayılabilmesi için karşılaması gereken koşullardır.
Not: CountIf, Application sınıfındaki WorksheetFunction nesnesinin bir parçasıdır. Bu nedenle, VBA CountIf her zaman “Application.WorksheetFunction” önekiyle çağrılır.
EXCEL VBA'DA COUNTLF NASIL KULLANILIR?
Excel VBA'da VBA CountIf not blank fonksiyonunu kullanmak için aşağıda gösterilen adımları izleyin.
- Araç çubuğundaki “Geliştirici” bölümüne gidin ve “Visual Basic” seçeneğine tıklayın. Şimdi, işlevler ve alt prosedürler eklemek için VBA Editörü açılır. Ardından, yeni bir modül veya boş sayfa oluşturmak için “Ekle” ve “Modül” düğmelerine tıklayın.



- İçinde “01-01-2023” tarihi olan hücre sayısını yazdırmak için bir alt rutin başlatın. Tablo aşağıda gösterilmiştir:


- count, rng ve criteria değişkenlerini tanımlayın. “count” değişkenleri, VBA CountIf Array işlevi tarafından verilen değeri depolar, “rng” VBA CountIf Range Variable tarafından kontrol edilen hücre aralığını depolar ve “criteria”, kriterlerimiz tarih biçiminde olduğundan “Date” olarak başlatılır.

- Tablonun aralığını ayarlayın.

- CountIf fonksiyonu için kriterleri ayarlayın.

- count değişkenini A2-A18 hücre aralığı arasındaki “01-01-2023” sayısının count değeri olarak ayarlayın.

CountIf fonksiyonu WorksheetFunction sınıfının bir parçasıdır. Bu nedenle onu tanımlarken " Application.WorksheetFunction.CountIf(rng, criteria) " önekiyle çağırırız . - Hemen sekmesindeki sayım değişkenini yazdırın.

Kod:
Sub CountIfCriteria()
Dim count As Long
Dim rng As Range
Dim criteria As Date
Ayarla rng = Range(“A2:A18”)
criteria = DateValue(“2023-01-01”)
count = Application.WorksheetFunction.CountIf(rng, criteria)
Debug.Print “' kriterine sahip hücre sayısı” & Format(criteria, “mm/dd/yyyy”) & “' is: ” & count
En Sub - Sayım değerini F5 tuşuna veya VBA araç çubuğunda bulunan çalıştır tuşuna basarak yazdırın.

Örnekler
Excel VBA'da VBA CountIf fonksiyonunun nasıl kullanılacağına dair bazı örneklere bakalım.
Örnek 1
Mevcut ürün sayısına göre bir şirketteki belirli bir Ürünün sayısını yazdırmamız gereken bir örneği ele alalım. Bu, VBA CountIf Multiple Criteria kullanılarak yapılabilir.

- Adım 1: Miktarı 7’den büyük olduğunda “Product A”nın sayısını yazdıran bir alt prosedür tanımlayın.

- Adım 2: count ve rng değişkenlerini tanımlayın. “count” değişkeni, VBA CountIf Çoklu Kriteri tarafından döndürülen count değerini depolar ve “rng”, CountIf koşullarının kontrol edildiği hücre aralığını depolar.

- Adım 3: VBA aralığını tablonun aralığı olarak ayarlayın . Ürünün “Ürün A” olup olmadığını ve miktarını kontrol eder.

- Adım 4: VBA CountIf Çoklu Kriter tarafından döndürülen değeri “count” olarak atayın.

Not:
Application.WorksheetFunction.CountIfs(rng, “Prıduct A”, rng.Offset(0, 1), “>7”), WorksheetFunction nesnesindeki CountIfs işlevini kullanarak belirli ölçütleri karşılayan bir aralıktaki hücre sayısını sayar. İşte bileşenleri:
- rng: Sayımın yapılacağı hücre aralığını temsil eder.
- “Product A”: İlk koşul için ölçütleri belirtir. rng'de “Product A” değerini içeren hücreleri sayar.
- rng.Offset(0, 1): rng'den bir sütun ötelenmiş bir aralık ofsetini temsil eder. İkinci koşul için kullanılır.
- “>7”: İkinci koşul için ölçütleri belirtir. Ofset aralığında 7'den büyük değere sahip hücreleri sayar.
CountIfs fonksiyonu her iki koşulu da aynı anda sağlayan hücre sayısını hesaplar.
- Adım 5: “count” değişkenini anında tabloya yazdırın.

Kod:
Sub CountIfMultipleConditions()
Dim count As Long
Dim rng As Range
Set rng = Range(“C2:D18”)
count = Application.WorksheetFunction.CountIfs(rng, “Ürün A”, rng.Offset(0, 1), “>7”)
Debug.Print “Sayı: ” & count
End Sub
- Adım 6: Yukarıdaki VBA kodunu yazdırın . Çıktı hemen sekmede yazdırılır.

Örnek 2
Aşağıdaki tabloda sınavlarda 85'in üzerinde puan alan öğrencilerin sayısını saymanız gereken bir örneği ele alalım:

- Adım 1: Eşik değerinin üzerinde puan alan öğrenci sayısını saymak için bir alt rutin başlatın.

- Adım 2: count, rng ve threshold değişkenlerini başlatın. "count" değişkeni, kullanıcı tarafından tanımlanan "eşik" değerinin üzerinde puan alan öğrencilerin sayısını depolamak için kullanılır.

- Adım 3: Eşik değerinden büyük sayıları kontrol etmek için aralık değerini başlatın.

- Adım 4: Öğrencinin tablosu için eşik değerini tanımlayın.

- Adım 5: Belirtilen aralıkta VBA CountIf komutunu uygulayarak count değişkenini tanımlayın.

CountIf daha sonra aralıktaki değerleri karşılaştırır ve 85'in üzerinde olup olmadıklarını kontrol eder. Eğer öyleyse, sayaç artırılır. Değilse, sayaç artırılmaz.
- Adım 6: MsgBox fonksiyonunu kullanarak çıktıyı yazdırın.

Kod:
Sub CountStudentsAboveThreshold()
Dim count As Long
Dim rng As Range
Dim threshold As Long
Set rng = Range(“B2:B20”)
threshold (eşik) = 85
count = Application.WorksheetFunction.CountIf(rng, “>85”)
MsgBox “& eşik & ” üzerinde puan alan öğrenci sayısı: ” & count
End Sub
- Adım 7: Yukarıdaki kodu yazdırın. Çıktı bir mesaj kutusunda yazdırılır.

Değişkenlerle Sonuç Elde Etme
VBA CountIf Çoklu kriterleri gerçekleştirmenin bir başka yolu da onları birden fazla değişkenle tanımlayıp CountIf fonksiyonunda çağırmaktır. Bunu nasıl yapacağımızı görelim.
Belirli bir günde satılan belirli elektronik ürünlerin miktarının verildiği bir örneği ele alalım. 5'ten büyük olan satılan bilgisayarların sayısını yazdırmalıyız.

- Adım 1: 5'in üzerinde satılan bilgisayarların satış sayısını saymak için bir alt rutin başlatın.

- Adım 2: Değişkenleri count, rng ve eşik, criteria1 ve criteria2 olarak başlatın. “count” değişkeni, “criteria1”in “criteria2”den büyük satış sayısını depolamak için kullanılır. “rng” değişkeni, tablonun aralığı olarak tanımlanır.

- Adım 3: Kriterler için tabloyu kontrol etmek üzere aralık değerini başlatın.

- Adım 4: VBA CountIf Çoklu Değişkenler için kriterleri tanımlamak üzere değişkenleri başlatın.

- Adım 5: Verilen aralıktaki ölçütleri kullanarak VBA CountIf'i gerçekleştirerek count değişkenini tanımlayın.

Kod:
Sub CountIfMultipleConditionsWithVariables()
Dim count As Long
Dim rng As Range
Dim criteria1 As String
Dim criteria2 As String
Set rng = Range(“A2:B10”)
criteria1 = “Computer”
criteria2 = “>5”
count = Application.WorksheetFunction.CountIfs(rng, criteria1, rng.Offset(0, 1), criteria2)
MsgBox “The count is: ” & count
End Sub
- Adım 6: Çıktıyı yazdırmak için “F5” tuşuna basın. Bir mesaj kutusunda görüntülenecektir.

Dikkat Edilmesi Gereken Önemli Noktalar
- COUNTIF işlevini kullanırken doğru sözdizimini sağladığınızdan emin olun. Aralık ve ölçüt argümanları doğru ve düzgün biçimlendirilmiş olmalıdır.
- Uygulayacağınız ölçüt belirli bir değer, bir hücre başvurusu , bir joker karakter deseni veya mantıksal bir ifade olabilir.
- Saymak istediğiniz hücre değerlerindeki bilinmeyen veya değişken karakterleri temsil etmek için ölçütlerinizde yıldız işareti (*) ve soru işareti (?) gibi joker karakterler kullanabilirsiniz.
- COUNTIF formülünü diğer hücrelere kopyalamayı planlıyorsanız , aralık başvurularını kilitlemek için mutlak başvurular (örneğin, $A$1:$A$10) kullanın. Bu, formülün her zaman doğru aralığa başvurmasını sağlar.
