Bu eğitim size VBA'da Excel COUNT işlevini nasıl kullanacağınızı gösterecektir.
VBA SAYISI işlevi, Çalışma Sayfanızda içinde değerler bulunan hücrelerin sayısını saymak için kullanılır. VBA'da WorksheetFunction yöntemi kullanılarak erişilir.
COUNT Çalışma SayfasıFonksiyonu
WorksheetFunction nesnesi, Excel'deki İşlev Ekle iletişim kutusunda bulunan Excel işlevlerinin çoğunu çağırmak için kullanılabilir. COUNT işlevi bunlardan biridir.
123 | Alt TestSayıFunctinoRange("D33") = Application.WorksheetFunction.Count(Range("D1:D32"))Alt Bitiş |
COUNT işlevinde en fazla 30 bağımsız değişkene sahip olabilirsiniz. Bağımsız değişkenlerin her biri bir hücre aralığına başvurmalıdır.
Aşağıdaki bu örnek, D1 ila D9 hücrelerinde değerlerle doldurulan hücre sayısını sayacaktır.
123 | Alt TestSayısı()Range("D10") = Application.WorksheetFunction.Count(Range("D1:D9"))Alt Bitiş |
Aşağıdaki örnek, D sütunundaki bir aralıkta ve F sütunundaki bir aralıkta kaç değer olduğunu sayacaktır. Application nesnesini yazmazsanız, varsayılacaktır.
123 | Alt TestCountMultiple()Range("G8") = WorksheetFunction.Count(Range("G2:G7"), Range("H2:H7"))Alt Bitiş |
Bir Değişkene Sayım sonucu atama
Formülünüzün sonucunu doğrudan Excel Aralığı'na yazmak yerine kodda başka bir yerde kullanmak isteyebilirsiniz. Bu durumda, sonucu daha sonra kodunuzda kullanmak üzere bir değişkene atayabilirsiniz.
1234567 | Alt AssignCount()Sonucu Tamsayı Olarak Karart'Değişkeni atasonuç = WorksheetFunction.Count(Range("H2:H11"))'Sonucu gösterMsgBox "Değerlerle doldurulmuş hücre sayısı " & sonuçAlt Bitiş |
Aralık Nesnesi ile COUNT
Range nesnesine bir hücre grubu atayabilir ve ardından bu Range nesnesini Çalışma SayfasıFonksiyonu nesne.
123456789 | Alt TestCountRange()Aralık Olarak Karartma'hücre aralığını ataSet rng = Aralık("G2:G7")'formüldeki aralığı kullanRange("G8") = WorksheetFunction.Count(rng)'aralık nesnesini serbest bırakRng ayarla = Hiçbir şeyAlt Bitiş |
COUNT Çoklu Aralık Nesnesi
Benzer şekilde, birden çok Aralık Nesnesinde kaç hücrenin değerlerle doldurulduğunu sayabilirsiniz.
123456789101112 | Alt TestCountMultipleRanges()Aralık olarak Dim rngAAralık olarak Dim rngB'hücre aralığını atarngA = Aralık ("D2:D10") ayarlarngB = Aralık ("E2:E10") olarak ayarla'formüldeki aralığı kullanRange("E11") = WorksheetFunction.Count(rngA, rngB)'aralık nesnesini serbest bırakrngA'yı ayarla = Hiçbir şeyrngB'yi ayarla = Hiçbir şeyAlt Bitiş |
COUNTA kullanılıyor
Sayım yalnızca hücrelerdeki DEĞERLERİ sayar, hücrede metin varsa hücreyi saymaz. Herhangi bir tür veriyle doldurulmuş hücreleri saymak için COUNTA işlevini kullanmamız gerekir.
123 | Alt TestCountA()Range("B8) = Application.WorksheetFunction.CountA(Range("B1:B6"))Alt Bitiş |
Aşağıdaki örnekte, B sütununda değer olmadığı için SAYI işlevi sıfır döndürürken C sütunu için 4 döndürür. Ancak COUNTA işlevi, içinde Metin bulunan hücreleri sayar ve bir değer döndürür. B sütununda 5, C sütununda 4 değerini döndürmeye devam ediyor.
COUNTBLANKS kullanma
COUNTBLANKS işlevi, yalnızca Hücre Aralığındaki Boş Hücreleri, yani içinde hiç veri bulunmayan hücreleri sayar.
123 | Alt TestCountBlank()Range("B8) = Application.WorksheetFunction.CountBlanks(Range("B1:B6"))Alt Bitiş |
Aşağıdaki örnekte, B sütununda boş hücre yokken C sütununda bir boş hücre vardır.
EĞERSAY İşlevini Kullanma
Kullanılabilecek başka bir çalışma sayfası işlevi EĞERSAY işlevidir.
123456 | Alt TestCountIf()Range("H14") = WorksheetFunction.CountIf(Range("H2:H10"), ">0")Range("H15") = WorksheetFunction.CountIf(Range("H2:H10"), ">100")Range("H16") = WorksheetFunction.CountIf(Range("H2:H10"), ">1000")Range("H17") = WorksheetFunction.CountIf(Range("H2:H10"), ">10000")Alt Bitiş |
Yukarıdaki prosedür, yalnızca içinde değerleri olan hücreleri, ölçütler eşleşirse sayar - 0'dan büyük, 100'den büyük, 1000'den büyük ve 10000'den büyük. Formülün doğru çalışması için ölçütleri tırnak işaretleri içine almanız gerekir.
WorksheetFunction'ın Dezavantajları
kullandığınızda Çalışma SayfasıFonksiyonu çalışma sayfanızdaki bir aralıktaki değerleri saymak için esnek bir formül değil, statik bir değer döndürülür. Bu, Excel'deki rakamlarınız değiştiğinde, tarafından döndürülen değer anlamına gelir. Çalışma SayfasıFonksiyonu değişmeyecek.
Yukarıdaki örnekte, TestCount prosedürü, bir değerin bulunduğu H sütunundaki hücreleri saymıştır. Formül çubuğunda görebileceğiniz gibi, bu sonuç bir rakamdır, formül değil.
Bu nedenle Aralık (H2:H12) içindeki değerlerden herhangi biri değişirse, H14'teki sonuçlar OLUMSUZ değiştirmek.
kullanmak yerine Çalışma SayfasıFonksiyon.Sayıkullanarak bir hücreye Sayma İşlevi uygulamak için VBA'yı kullanabilirsiniz. formül veya formülR1C1 yöntemler.
Formül Yöntemini Kullanma
Formül yöntemi, özellikle aşağıda gösterildiği gibi bir hücre aralığına işaret etmenizi sağlar, örneğin: H2:H12.
123 | Alt TestSayısıFormulaAralık("H14").Formül = "=Sayı(H2:H12)"Alt Bitiş |
FormulaR1C1 Yöntemini Kullanma
FromulaR1C1 yöntemi, sizi belirli bir hücre aralığıyla sınırlamadığı için daha esnektir. Aşağıdaki örnek bize yukarıdakiyle aynı cevabı verecektir.
123 | Alt TestCountFormula()Aralık("H14").Formül = "=Sayım(R[-9]C:R[-1]C)"Alt Bitiş |
Ancak, formülü daha esnek hale getirmek için kodu şu şekilde değiştirebiliriz:
123 | Alt TestCountFormula()ActiveCell.FormulaR1C1 = "=Sayım(R[-11]C:R[-1]C)"Alt Bitiş |
Çalışma sayfanızın neresinde olursanız olun, formül doğrudan üzerindeki 12 hücredeki değerleri sayacak ve yanıtı ActiveCell'inize yerleştirecektir. COUNT işlevi içindeki Aralık, Satır (R) ve Sütun (C) sözdizimi kullanılarak başvurulmalıdır.
Bu yöntemlerin her ikisi de VBA içinde Dinamik Excel formüllerini kullanmanızı sağlar.
Artık H14'te bir değer yerine bir formül olacak.