Excel VBA'da COUNTA Çalışma Sayfası Fonksiyonu Nedir?
COUNTA, VBA'da içindeki değerlerden bağımsız olarak tüm boş olmayan hücreleri saymak için kullanılabilen bir çalışma sayfası işlevidir. VBA COUNTA, "Her Şeyi Say" anlamına gelirken, COUNT, yalnızca verilen hücre aralığındaki sayısal değerleri sayan bir işlevdir. VBA COUNTA işlevi, sayılar, dize, özel karakterler, hata değerleri (#N/A, #DIV/0!, #NAME?), boşluk karakterleri vb. gibi değerleri sayabilir. VBA COUNTA işlevi tarafından döndürülen çıktı sayısal değerdir, bu nedenle çıktıyı bir değişkene atamaya çalıştığımızda değişkenin veri türünün farkında olmalıyız.
Örneğin aşağıdaki verilere bakalım.


A2 ile A10 aralığındaki toplam boş olmayan hücre sayısını almak için aşağıdaki kodu kullanabiliriz. Bu sayım, D1 hücresindeki toplam boş olmayan hücre sayısını yazdıracaktır.

- VBA COUNTA, verilen hücre aralığındaki tüm boş olmayan hücreleri saymamıza yardımcı olan bir çalışma sayfası işlevidir.
- VBA COUNTA boşluğu bir karakter olarak ele alır, dolayısıyla eğer bir hücrede sadece boşluk varsa bu hücre boş olmayan bir hücre olarak ele alınır.
- VBA COUNTA, verilen aralıktaki tüm değerleri sayar; sayılar, metinler, mantıksal değerler, hata değerleri, özel karakterler ve boşluk karakterleri gibi.
- VBA COUNTA fonksiyonunu kullanarak tüm sütun ve satırları sayabiliriz.
- VBA COUNTA fonksiyonu için dinamik aralığı ayarlamak amacıyla değişkenler kullanabiliriz.
VBA COUNTA Çalışma Sayfası İşlevinin Sözdizimi
Aşağıda VBA COUNTA fonksiyonunun sözdizimi yer almaktadır.
Targeted Cells or Variable Name = WorksheetFunction.CountA(Arg1, [Arg2], [Arg3], …) As Double
Targeted Cells or Variable Name: VBA COUNTA fonksiyonunun sonucunu depolamamız gereken alanı temsil eder. Bir hücre veya değişken olabilir.
WorksheetFunction.CountA(: COUNTA, worksheet fonksiyon kategorisinin bir parçası olduğundan COUNTA fonksiyonuna erişmek için WorksheetFunction anahtar kelimesini kullanmalıyız.
Arg1: Bu zorunlu bir argümandır. Burada, veri hücrelerini saymak istediğimiz hücre adresini veya hücre aralığını sağlarız. Hücre aralığı adresi doğrudan bir hücre aralığı olabilir veya aralık referansını tutan bir değişken olabilir.
[Arg2]: Bu argümanlar isteğe bağlıdır.
Excel VBA'da COUNTA Çalışma Sayfası Fonksiyonu Nasıl Kullanılır?
Size VBA COUNTA fonksiyonunun adım adım pratik bir örneğini gösterelim. Örneğin, aşağıdaki verilere bakın.

A2 ile A12 aralığında verilerimiz var ve aralarında bazı boş hücreler var. D2 hücresinde A2 ile A12 aralığındaki verileri içeren toplam hücre sayısını elde etmek için VBA COUNTA işlevini uygulamak üzere aşağıdaki adımları takip edelim.
Adım 1: Makroya isim vererek alt prosedürü başlatın.

Adım 2: VBA COUNTA fonksiyonunun çıktısı bir skaler değer döndürür. Bu nedenle, bunu bir hücrede, yani D2 hücresinde saklamamız gerekir. RANGE nesnesine sahip hücreyi, Range nesnesinin VALUE özelliğiyle birlikte referans alın.

Adım 3: COUNTA fonksiyonunu elde etmek için Çalışma Sayfası fonksiyon özelliğine erişin.

Adım 4: Çalışma Sayfası İşlevine erişildiğinde, bir nokta girin. VBA kodlamasının bir parçası olarak kullanılabilen tüm çalışma sayfası işlevlerinin listesini gösterecektir .

Bu listeden VBA COUNTA fonksiyonunu seçin.

Adım 5: VBA COUNTA işlevi için. Tüm boş olmayan hücreleri saymak istediğimiz hücre aralığını sağlamalıyız. Burada, VBA COUNTA aralığı A2 ila A12'dir, dolayısıyla hücre aralığını A2 ila A12 olarak sağlayın.

Adım 6: VBA COUNTA fonksiyonunu sonlandırmak için parantezi kapatın. Aşağıda sizin için tam kod bulunmaktadır.
Sub Counta_Basic()
Range(“D2”).Value = WorksheetFunction.CountA(Range(“A2:A12”))
End Sub
Bu kodu F5 fonksiyon tuşuna basarak çalıştıralım ve D2 hücresindeki toplam boş olmayan hücre sayısını bulmalıyız.

A2 ile A12 aralığındaki boş olmayan hücrelerin toplam sayısı 9'dur ve VBA COUNTA fonksiyonu tarafından da aynı sayı döndürülmüştür.
Excel VBA'da COUNTA Fonksiyonunun Örnekleri
VBA COUNTA fonksiyonunun kullanımına dair bazı gerçek dünya örneklerine bakalım.
Örnek 1: VBA IF Koşulu için Destekleyici Fonksiyon Olarak VBA COUNTA
VBA COUNTA genellikle VBA IF koşuluyla birlikte destekleyici bir işlev olarak kullanılır. Örneğin, Excel'deki aşağıdaki verilere bakın.

İnsanların isimleri var ve 5 seansta bazı eğitimlere katıldılar. Durumu güncellemek için izleyiciyi korurken tutarlı deseni takip etmediler.
Örneğin, bazı kişiler Evet girdi ve bazı kişiler Evet yerine 1 girdi. Ancak, 5 eğitim oturumunun toplam hücre sayısı 4'ten büyük veya eşitse "Tamamlandı" durumuna ulaşmamız gerekir. Hücreleri sayarken değerler önemli değildir ancak boş olmayan tüm hücreleri saymamız gerekir.
VBA COUNTA fonksiyonunu VBA IF koşuluyla kullanarak boş olmayan hücreleri kontrol edebilir ve durum sütununa ulaşabiliriz.
Aşağıdaki kod, VBA IF koşulu için verilen VBA COUNTA koşulu girişine dayalı duruma ulaşmamıza yardımcı olacaktır.
Sub Counta_Example1()‘Find the last used cell in the worksheet
Dim LR As Long
LR = Cells(Rows.Count, 1).End(xlUp).Row
‘Define a variable to loop through all the cells
Dim K As Long
‘Initiate FOR NEXT loop
For K = 2 To LR
‘Use VBA COUNTA FUNCTION to check the total count of non blank cells
If WorksheetFunction.CountA(Range(“B” & K & “:F” & K)) >= 4 Then
‘If the cell count is >=4 then insert Completed in status column
Cells(K, 7).Value = “Completed”
Else
‘If the cell count is not >=4 then insert Not Completed in status column
Cells(K, 7).Value = “Not Completed”
End If
Next K
End Sub
Birden fazla hücrede verimiz olduğundan, her hücreyi dolaşmak ve verilen aralıktaki hücre sayısının 4 veya daha büyük olup olmadığını kontrol etmek için FOR NEXT döngüsünü kullandık; sayım 4 veya daha büyükse durum sütununa "Tamamlandı" durumu eklenecek, aksi takdirde durum sütununa "Tamamlanmadı" durumu eklenecektir.
Kodu çalıştıralım ve status sütununda aşağıdaki sonucu elde edelim.

“James” (satır numarası 3) ve “Ryan” (satır numarası 6) adları için “Tamamlandı” sonucunu elde ettik çünkü VBA COUNTA fonksiyonu toplam boş olmayan hücre sayısını 5 olarak döndürdü.
Örnek 2: VBA COUNTA Boşluğu Boş Olmayan Hücre Olarak Ele Alır
VBA COUNTA fonksiyonunda anlamamız gereken en önemli özelliklerden biri boşluğu bir karakter olarak saymasıdır.
Örneğin Excel'deki aşağıdaki verilere bakalım.

A2 ile A8 aralığında bazı değerlerimiz var ve D2 hücresinde boş olmayan hücrelerin toplam sayısını hesaplamamız gerekiyor.
Aşağıdaki kod bize A2 ile A8 aralığındaki boş olmayan hücre sayısını verecektir.
Sub Counta_Example2()
Range(“D2”).Value = WorksheetFunction.CountA(Range(“A2:A8”))
End Sub
Bu kodu çalıştırdığımızda D2 hücresinde aşağıdaki sonucu alacağız.

Toplam hücre sayısı 7'dir.
Ancak A2 ila A8 aralığındaki verilere yakından bakarsak toplamda 7 hücremiz var. Bu 7 hücreden yalnızca 6'sında verimiz var ve kalan 1 hücre boş. Ancak VBA COUNTA işlevi tüm 7 hücreyi boş olmayan hücreler olarak döndürdü.
Başkasından dosya aldığımızda gereksiz veriler konusunda dikkatli olmamız gerekir. Her hücredeki toplam karakterleri saymak için LEN işlevini uygulayalım.

A4 hücresinde görünmeyen 1 karakterimiz var, yani bir boşluk karakterimiz var, dolayısıyla LEN excel fonksiyonu A4 hücresindeki toplam karakter sayısını 1 olarak döndürdü.
Bu nedenle, VBA COUNTA fonksiyonuyla çalışırken boşluğun da bir karakter olduğunu aklımızda tutmamız gerekir, bu nedenle VBA COUNTA fonksiyonu bu hücreyi boş olmayan hücre olarak değerlendirecektir.
Örnek 3: VBA COUNTA COLUMN ve VBA COUNTA ROW
VBA COUNTA fonksiyonunda tüm sütunu veya satırı referans olarak kullanabiliriz. Örneğin, aşağıdaki kodlara bakın.
Sub Counta_Example3()
'A sütunundaki tüm hücreleri say.
Range(“D2”).Value = WorksheetFunction.CountA(Range(“A:A”))
'10. satırdaki tüm hücreleri say.
Range(“D2”).Value = WorksheetFunction.CountA(Range(“10:10”))
End Sub
Kodun ilk satırı A sütunundaki tüm hücreleri sayacaktır, buna VBA COUNTA Sütunu adı verilir ve kodun ikinci satırı 10. satırdaki tüm hücreleri sayacaktır, buna da VBA COUNTA Satırı adı verilir.
Değişkenlerle Kodlama
Değişkenler, daha büyük veri kümeleriyle çalışmamız gerektiğinde en kullanışlıdır. Boş olmayan hücrelerin sayısını almak için VBA COUNTA işlevindeki değişkenlerin yardımını alabiliriz.
Örneğin aşağıdaki verilere bakalım.

Kodu değişkenlerle geliştirelim.
Aşağıdaki kod değişken referanslı koddur.

Bölüm #1: Burada bir değişken tanımladık ve A2 ile A7 arasındaki sayma aralığını Count_Range değişkenine ayarladık.
Bölüm #2: Burada başka bir değişken tanımladık ve sonuç hücresi D2'yi Result_Cell değişkenine ayarladık.
Bölüm #3: Burada Bölüm #1 ve #2'de tanımlanan değişkenlerin yardımıyla VBA COUNTA fonksiyonunu kullandık.
Kodu çalıştırdığımızda D2 sonuç hücresinde aşağıdaki sonucu alacağız.

Ancak bu VBA COUNTA dinamik aralık sayımı değildir çünkü listeye bazı veriler eklenirse, yeni eklenen verileri dikkate almayacaktır.
Örneğin aşağıdaki verilere bakalım.

8. ve 9. satırlara iki yeni ürün ekledik. Mevcut kod, bu yeni eklenen hücreleri dikkate almayacaktır çünkü önceki kodda verilen veri aralığı sabittir, yani A2'den A7'ye.
Burada veri aralığını dinamik olarak elde etmek için mantığı uygulamamız gerekir. Aşağıdaki kod veri aralığını dinamik olarak bulacak ve hücre aralığının tamamındaki hücre sayısını döndürecektir.

Önceki koda göre sadece sarı arka plan renkli kod yeni eklenen elemanlardır.
LR değişkeni A sütununda kullanılan son satırı bulmak için kullanılır ve daha sonra bu değişkeni veri aralığını (yani A2:A&LR) ayarlamak için kullanırız
Bu şekilde VBA COUNTA fonksiyonu için veri aralığını dinamik olarak belirleyebiliriz.
Dikkat Edilmesi Gereken Önemli Noktalar
- VBA COUNTA bir VBA fonksiyonu değildir; bunu yalnızca çalışma sayfası fonksiyon koleksiyonunun bir parçası olarak kullanabiliriz.
- VBA COUNTA fonksiyonu çıktı olarak sadece sayısal değer döndürür.
- Veriyi tüm sütun veya satırda saymamız gerektiğinde, tüm sütun veya satır referansını çift tırnak içinde vermemiz gerekir.
- VBA COUNTA fonksiyonu sayım sırasında tüm boş hücreleri yok sayar.
VBA COUNTA aşağıdaki iki nedenden dolayı çalışmayacaktır.
• VBA COUNTA skaler değer döndürür, bu nedenle sayısal veri türünü içeren bir hücreye veya değişkene ayarlanması gerekir.
• VBA COUNTA aralık referansı gerektirir ve verilen aralık doğru bir şekilde verilmezse hata verecektir.
VBA COUNT: Bu sadece dize değerlerine sahip hücreleri sayar.
VBA COUNTA: Bu boş hücreler hariç tüm hücreleri sayar.
VBA COUNTIF: COUNTIF fonksiyonu belirli kriterlere göre saymak için kullanılır.
VBA COUNTA: Bu, verilen aralıktaki tüm boş olmayan hücreleri sayar.
