Bu eğitim size VBA'da Excel EĞERSAY ve ÇOKEĞERSAY işlevlerini nasıl kullanacağınızı gösterecektir.
VBA, kullanabileceğiniz EĞERSAY veya ÇOKEĞERSAY İşlevlerinin bir eşdeğerine sahip değildir - bir kullanıcı, VBA'daki yerleşik Excel işlevlerini aşağıdakileri kullanarak kullanmalıdır: Çalışma SayfasıFonksiyonu nesne.
EĞERSAY Ç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. EĞERSAY işlevi bunlardan biridir.
123 | Alt TestCountIf()Range("D10") = Application.WorksheetFunction.CountIf(Range("D2:D9"), ">5")Alt Bitiş |
Yukarıdaki prosedür, yalnızca 5 veya daha büyük bir değere sahiplerse Aralık(D2:D9) içindeki hücreleri sayar. Büyüktür işareti kullandığınız için 5'ten büyük ölçütlerin parantez içinde olması gerektiğine dikkat edin.
Bir Değişkene EĞERSAY 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 AssignSumIfVariable()Sonucu Çift olarak karart'Değişkeni atasonuç = Application.WorksheetFunction.CountIf(Range("D2:D9"), ">5")'Sonucu gösterMsgBox "5'ten büyük değere sahip hücre sayısı " & sonuçAlt Bitiş |
EĞERSAY kullanma
EĞERSAY işlevi, EĞERSAY Çalışma Sayfasıİşlevi'ne benzer ancak birden fazla ölçütü kontrol etmenizi sağlar. Aşağıdaki örnekte formül, Satış Fiyatının 6'dan ve Maliyet Fiyatının 5'ten büyük olduğu durumlarda D2'den D9'a kadar olan hücrelerin sayısını sayar.
123 | CountIfs() Kullanarak AltRange("D10") = WorksheetFunction.CountIfs(Range("C2:C9"), ">6", Range("E2:E9"), ">5")Alt Bitiş |
Bir Aralık Nesnesi ile COUNTIF kullanma
Range nesnesine bir hücre grubu atayabilir ve ardından bu Range nesnesini Çalışma SayfasıFonksiyonu nesne.
123456789 | Alt TestCountIFRange()Aralık olarak Dim rngCount'hücre aralığını atarngCount = Aralık ("D2:D9") olarak ayarlayın'formüldeki aralığı kullanRange("D10") = WorksheetFunction.SUMIF(rngCount, ">5")'aralık nesnelerini serbest bırakrngCount'u ayarla = Hiçbir şeyAlt Bitiş |
Çoklu Aralık Nesnelerinde COUNTIFS Kullanma
Benzer şekilde, ÇOKEĞERSAY'ı birden çok Aralık Nesnesinde kullanabilirsiniz.
123456789101112 | Alt TestCountMultipleRanges()Aralık olarak Dim rngCriteria1Aralık olarak Dim rngCriteria2'hücre aralığını ataSet rngCriteria1= Aralık("D2:D9")rngCriteria2 = Aralık ("E2:E10") olarak ayarlayın'formüldeki aralıkları kullanınRange("D10") = WorksheetFunction.CountIfs(rngCriteria1, ">6", rngCriteria2, ">5")'aralık nesnelerini serbest bırakrngCriteria1 = Hiçbir şey ayarlarngCriteria2'yi ayarla = Hiçbir şeyAlt Bitiş |
EĞERSAY Formülü
kullandığınızda WorksheetFunction.COUNTIF çalışma sayfanızdaki bir aralığa toplam eklemek 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, prosedür, Satış Fiyatının 6'dan büyük olduğu Aralık(D2:D9) içindeki değerlere sahip hücrelerin miktarını saymıştır ve sonuç D10'a yerleştirilmiştir. Formül çubuğunda görebileceğiniz gibi, bu sonuç bir rakamdır, formül değil.
Aralık (D2:D9) içindeki değerlerden herhangi biri değişirse, D10'daki sonuç OLUMSUZ değiştirmek.
kullanmak yerine WorksheetFunction.SumIfkullanarak bir hücreye SUMIF İşlevi uygulamak için VBA'yı kullanabilirsiniz. formül veya formülR1C1 yöntemler.
Formül Yöntemi
Formül yöntemi, aşağıda gösterildiği gibi, örneğin: D2:D9 gibi belirli bir hücre aralığına işaret etmenizi sağlar.
123 | Alt TestCountIf()Aralık("D10").FormulaR1C1 ="=EĞERSAY(D2:D9, "">5"")"Alt Bitiş |
FormulaR1C1 Yöntemi
FormulaR1C1 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 TestCountIf()Aralık("D10").FormulaR1C1 = "=EĞERSAY(R[-8]C:R[-1]C,"">5"")"Alt Bitiş |
Ancak, formülü daha da esnek hale getirmek için kodu şu şekilde değiştirebiliriz:
123 | Alt TestCountIf()ActiveCell.FormulaR1C1 = "=EĞERSAY(R[-8]C:R[-1]C,"">5"")"Alt Bitiş |
Çalışma sayfanızın neresinde olursanız olun, formül, doğrudan üstündeki ölçütleri karşılayan hücreleri sayacak ve yanıtı ActiveCell'inize yerleştirecektir. EĞERSAY işlevinin 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 D10'da değer yerine formül olacak.
Bağlantı metniniz