VBA EĞERSAY ve ÇOKEĞERSAY İşlevleri

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

wave wave wave wave wave