Excel VBA'daki Count işlevi, bir aralıktaki veya koleksiyondaki öğe sayısını belirlemek için kullanılır. Belirli ölçütleri karşılayan öğelerin sayısını döndürür. Count işlevi, genellikle bir aralıktaki değerlere sahip hücre sayısını saymak veya bir aralıktaki belirli bir değerin oluşum sayısını saymak için kullanılır. Örneğin, VBA Count Worksheets'i kullanarak çalışma sayfası sayısını bulma.
Aşağıdaki örneği ele alalım:


Bu örnek, boş olmayan hücrelerin sayısını sayar. Verilen A1-A10 aralığı için VBA Sayma boş olmayan hücreleri gerçekleştirir. Aşağıda gösterildiği gibi çıktıyı Hemen sekmesinde yazdırır:

- Bir aralıktaki değer içeren veya boş olmayan hücre sayısını saymak için Say işlevini kullanabilirsiniz.
- VBA Count'u kullanarak bir dizede döngü oluşturabilir ve belirli bir karakterin oluşumlarını sayabilirsiniz.
- Count fonksiyonu, bir klasör içindeki dosya sayısını saymak için FileSystemObject ile birleştirilebilir.
- Hücrelerin renk özelliği istenilen bir renkle karşılaştırılarak, Say fonksiyonu belirtilen renkle eşleşen hücre sayısını toplayabilir.
- Bir koleksiyon kullanarak veya belirli ölçütler uygulayarak, bir aralık veya koleksiyon içindeki benzersiz öğeleri saymak için Sayma işlevinden yararlanabilirsiniz.
VBA Sayım Sözdizimi
VBA'daki temel söz dizimi aşağıda görüldüğü gibidir:
SÖZ DİZİMİ;
Count(expression)
VBA'da Count Fonksiyonu Nasıl Kullanılır?
VBA count fonksiyonunu uygulamak için aşağıda gösterildiği gibi şu adımları gerçekleştiriyoruz:
- Araç çubuğundaki “Geliştirici” bölümüne gidin ve “Visual Basic” seçeneğine tıklayın. Şimdi, VBA Editörü fonksiyonlar ve Alt prosedürler eklemek için 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.



- Belirli bir kelimenin bir tabloda kaç kez geçtiğini saymak için bir alt prosedür başlatın.

Söz konusu tablo aşağıda gösterilmektedir:
- Aralığı, sayım değişkenini, aranacak değeri ve üzerinde çalışacağımız Çalışma Sayfasını tanımlayın.

- Bu alt programın çalışacağı çalışma sayfasını ayarlayın.

- Alt rutin için hücre aralığını ayarlayın.

- Yukarıdaki tabloda aranacak değeri bildirin.

- Tabloda “apple” kelimesinin geçtiği yerleri sayın ve “apple” kelimesinin kaç kez tekrarlandığını yazdırın.

COUNTIF fonksiyonu Excel VBA'da aynı zamanda “WorksheetFunction” nesnesinin bir parçası olduğundan, COUNT veya COUNTIF fonksiyonunu çağırırken, onu “Application.WorksheetFunction” önekiyle çağırırız. Şimdi “apple” kelimesi için sayım değerini yazdırın.
Kod:
Sub CountOccurrences()
Dim rng As Range
Dim countValue As Long
Dim searchValue As String
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets(“VBA_Count_Use”)
Set rng = Range(“A2:A11”)
searchValue = “apple”
countValue = Application.WorksheetFunction.CountIf(rng, searchValue)
Debug.Print “'apple' kelimesinin oluşum sayısı: ” & countValue
End Sub - “F5” tuşunu kullanarak kodu çalıştırın ve çıktıyı Immediate sekmesinde görün.

Örnekler
VBA Count'un VBA kodlarında nasıl kullanılabileceğini görmek için birkaç örneğe bakalım .
Örnek 1
VBA Satır sayısını kullanarak tabloda bulunan farklı satış elemanlarını görüntülememiz gereken bir örneği ele alalım.

- Adım 1: B sütununda “Satış Temsilcisi” sütunu için farklı değerler bulan bir alt prosedür tanımlayın.

- Adım 2: Rows'u kullanarak, yukarıdaki Table.count fonksiyonu için VBA Count Rows'u gerçekleştiriyoruz ve xlUp veya XLOOKUP fonksiyonunu kullanarak boş olmayan son satırı buluyoruz . Burada, rastgele bir sütun alıyoruz ve tüm sütunların bir tabloda aynı sayıda satırı olacağı için satır sayısını sayıyoruz.

- Adım 3: Satış Temsilcisi sütunundaki farklı değerleri bulmak için benzersiz değerleri filtrelemek üzere AdvancedFilter yöntemini kullanırız.

Öncelikle, filtre yönteminin aralığını bildirin; burada, B2 hücresinden başlayarak daha önce bulduğumuz sütunun son satırına kadar. Bu aralığa, VBA AdvancedFilter gerçekleştirin ve filtrelenmiş değerleri "Action"da xlFilterCopy kullanarak kopyalayın, ardından bu değerleri "E" sütununa kopyalayın. Yalnızca farklı değerlerin eklenmesi için Unique'i "True" olarak ayarlayın.
Kod:
Sub CountUniqueSalesReps()
Dim row As Long
row = Cells(Rows.count, “C”).End(xlUp).row
ActiveSheet.Range(“B2:B” & row).AdvancedFilter _
Action:=xlFilterCopy, CopyToRange:=ActiveSheet.Range(“E2”), _
Unique:=True
End Sub
- Adım 5: Tablodaki farklı satış temsilcilerini yazdırmak için kodu çalıştırın.

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

- Adım 1: 80'in üzerinde puan alan öğrencilerin sayısını saymak için bir alt rutin başlatın.

- Adım 2: Bu alt rutinin çalışacağı çalışma sayfasını depolamak için bir değişken bildirin. Tablonun aralığı Excel VBA'daki Aralık değişkeni kullanılarak tanımlanır. Verilen girdi ondalık biçimdeyse eşik işaretleri iki katı olacak ve ardından 80'in üzerinde değerlere sahip satır sayısını depolamak için sayım değeri.

- Adım 3: Bu alt rutinin çalışacağı çalışma sayfasını bildirin.

- Adım 4: 80'in üzerindeki değerlerin sayısını bulmak için, Sayma fonksiyonunun etkin bir şekilde çalışabilmesi için yalnızca puanların aralığını bildiriyoruz.

- Adım 5: Eşik değerini ayarlayın.

- Adım 6: COUNTIF fonksiyonunu kullanarak puanı 80'in üzerinde olan satır sayısını bulun ve satır sayısını yazdırın.

Kod:
Sub countAboveThreshold()
Dim ws As Worksheet
Dim scoreRange As Range
Dim threshold As Double
Dim countAboveThreshold As Long
Set ws = ThisWorkbook.Worksheets(“Example_2”)
Set scoreRange = ws.Range(“B2:B20”)
threshold = 80
countAboveThreshold = Application.WorksheetFunction.CountIf(scoreRange, “> ” & threshold)
Debug.Print “Puanları ” & threshold & “: ” üzerinde olan öğrenci sayısı & countAboveThreshold
End Sub
- Adım 7: Yukarıdaki kodu “F5” kullanarak veya VBA araç çubuğundaki “Çalıştır” düğmesine tıklayarak çalıştırarak eşik değerinin üzerindeki satır sayısının sayısını yazdırın. Çıktı aşağıda gösterilmiştir.

Dikkat Edilmesi Gereken Önemli Noktalar
- Aralığı veya koleksiyonu belirtin: Count işlevi için argüman olarak geçerli bir aralık veya koleksiyon sağlayın. Bu, öğelerin doğru sayılmasını sağlar.
- Application.WorksheetFunction.Count sözdizimini kullanın: Count bir çalışma sayfası fonksiyonu olduğundan, VBA'da fonksiyona erişmek için Application.WorksheetFunction önekiyle kullanılması önerilir.
- Sonucu bir değişkene atayın: Count fonksiyonunun sonucunu daha sonraki işleme veya görüntüleme için bir değişkende yakalayın.
- Count ve CountA'yı karıştırmayın: Count işlevi bir aralıktaki sayısal değerlerin sayısını sayarken, CountA boş olmayan hücrelerin (metin, sayılar ve mantıksal değerler dahil) sayısını sayar. Gereksinimlerinize göre uygun işlevi kullandığınızdan emin olun.
- Sayısal olmayan değerler için Count kullanmayın: Count işlevi yalnızca bir aralıktaki sayısal değerleri sayar. Sayısal olmayan değerleri veya belirli ölçütleri karşılayan hücreleri saymak istiyorsanız, CountIf veya özel koleksiyon nesneleri gibi diğer işlevleri kullanmayı düşünün.
- Gerekli kütüphane referanslarını eklemeyi unutmayın: Erken bağlamayı kullanıyorsanız ve bir VBA modülünde kod yazıyorsanız, Count fonksiyonuna erişmek için uygun kütüphane referansını (örneğin Microsoft Excel Nesne Kütüphanesi) eklediğinizden emin olun.
• Dizenin uzunluğunu almak için LEN işlevini kullanın.
• For döngüsü kullanarak dizedeki her karakter arasında dolaşın.
• Geçerli karakterin saymak istediğiniz belirli karakterle eşleşip eşleşmediğini kontrol edin.
• Her eşleşme bulunduğunda bir sayaç değişkenini artırın.
• Sayaç değişkeninin son değeri, dizedeki belirli karakterlerin sayısını temsil edecektir.
Evet, aşağıdaki adımları izleyerek Replace işlevini kullanmadan Excel VBA'da bir dizeyi değiştirmek mümkündür:
• Dosya sistemine erişmek için FileSystemObject'i kullanın .
• CreateObject işlevini kullanarak bir FileSystemObject değişkeni oluşturun.
• Klasöre bir başvuru almak için FileSystemObject'in GetFolder yöntemini kullanın .
• Dosya koleksiyonuna erişmek için klasör nesnesinin Files özelliğini kullanın.
• Dosya sayısını almak için files koleksiyonunun Count özelliğini kullanın
