Bu öğretici, VBA'da Excel Ortalama işlevini nasıl kullanacağınızı gösterecektir.
Excel ORTALAMA İşlevi, Çalışma Sayfanızdaki içinde değerler bulunan bir aralık hücrelerinden bir ortalamayı hesaplamak için kullanılır. VBA'da WorksheetFunction yöntemi kullanılarak erişilir.
ORTALAMA Çalışma SayfasıFonksiyon
WorksheetFunction nesnesi, Excel'deki İşlev Ekle iletişim kutusunda bulunan Excel işlevlerinin çoğunu çağırmak için kullanılabilir. ORTALAMA işlevi bunlardan biridir.
123 | Alt TestFonksiyonuRange("D33") = Application.WorksheetFunction.Average("D1:D32")Alt Bitiş |
ORTALAMA 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, B11 ila N11 hücrelerinin toplamının ortalamasını üretecektir.
123 | Alt TestAverage()Range("O11") = Application.WorksheetFunction.Average(Range("B11:N11"))Alt Bitiş |
Aşağıdaki örnek, B11 ila N11 arasındaki hücrelerin toplamının ve B12:N12'deki hücrelerin toplamının bir ortalamasını üretecektir. Application nesnesini yazmazsanız, olduğu varsayılacaktır.
123 | Alt TestAverage()Aralık("O11") = Çalışma SayfasıFunction.Average(Range("B11:N11"),Range("B12:N12"))Alt Bitiş |
Bir Değişkene ORTALAMA sonuç atama
Formülünüzün sonucunu doğrudan bir 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 AssignAverage()Sonucu Tamsayı Olarak Karart'Değişkeni atasonuç = WorksheetFunction.Average(Range("A10:N10"))'Sonucu gösterMsgBox "Bu aralıktaki hücrelerin ortalaması " & sonuçAlt Bitiş |
Bir Aralık Nesnesiyle ORTALAMA
Range nesnesine bir hücre grubu atayabilir ve ardından bu Range nesnesini Çalışma SayfasıFonksiyonu nesne.
123456789 | Alt TestAverageRange()Aralık Olarak Karartma'hücre aralığını ataSet rng = Aralık("G2:G7")'formüldeki aralığı kullanRange("G8") = WorksheetFunction.Average(rng)'aralık nesnesini serbest bırakRng ayarla = Hiçbir şeyAlt Bitiş |
ORTALAMA Çoklu Aralık Nesneleri
Benzer şekilde, birden çok Menzil Nesnesinden hücrelerin ortalamasını hesaplayabilirsiniz.
123456789101112 | Alt TestAverageMultipleRanges()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ığı kullanAralık("E11") = Çalışma SayfasıFunction.Average(rngA, rngB)'aralık nesnesini serbest bırakrngA'yı ayarla = Hiçbir şeyrngB'yi ayarla = Hiçbir şeyAlt Bitiş |
ORTALAMA kullanma
ORTALAMA işlevi, ORTALAMA işlevinden, hücrelerden birinde metin olsa bile, bir aralıktaki tüm hücrelerden bir ortalama oluşturmasıyla farklıdır - metni sıfırla değiştirir ve bunu ortalamanın hesaplanmasına dahil eder. ORTALAMA işlevi o hücreyi yok sayar ve hesaplamaya dahil etmez.
123 | Alt TestAverageA()Aralık("B8) = Application.WorksheetFunction.AverageA(Range("A10:A11"))Alt Bitiş |
Aşağıdaki örnekte, ORTALAMA işlevi, hesaplama A10 ila A11 arasındaki hücrelerde kullanıldığında, ORTALAMA işlevine farklı bir değer döndürür.
ORTALAMA formülünün yanıtı, A11'deki metni sıfırla değiştirdiği için ORTALAMA formülünden daha düşüktür ve bu nedenle, ORTALAMA'nın hesapladığı 12 değer yerine 13'ün üzerinde değerin ortalamasını alır.
AVERAGEIF kullanma
EĞERORTALAMA İşlevi, belirli bir ölçütü karşılayan bir hücre aralığının toplamının ortalamasını almanızı sağlar.
123 | Alt OrtalamaIf()Range("F31") = WorksheetFunction.AverageIf(Range("F5:F30"), "Tasarruf", Range("G5:G30"))Alt Bitiş |
Yukarıdaki prosedür, yalnızca F sütunundaki karşılık gelen hücrenin içinde 'Tasarruf' kelimesinin bulunduğu G5:G30 aralığındaki hücrelerin ortalamasını alacaktır. Kullandığınız kriterler tırnak içinde olmalıdır.
WorksheetFunction'ın Dezavantajları
kullandığınızda Çalışma SayfasıFonksiyonu çalışma sayfanızdaki bir aralıktaki değerlerin ortalamasını almak 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, TestAverage prosedürü, B11:M11'in ortalamasını oluşturmuş ve cevabı N11'e koymuştur. Formül çubuğunda görebileceğiniz gibi, bu sonuç bir rakamdır, formül değil.
Bu nedenle Range(B11:M11 ) içindeki değerlerden herhangi biri değişirse, N11'deki sonuçlar OLUMSUZ değiştirmek.
kullanmak yerine Çalışma SayfasıFonksiyon.Ortalamakullanarak bir hücreye ORTALAMA İşlevini uygulamak için VBA'yı kullanabilirsiniz. formül veya formülR1C1 yöntemler.
Formül Yöntemini Kullanma
Formül yöntemi, aşağıda gösterildiği gibi, örneğin: B11:M11 gibi belirli bir hücre aralığına işaret etmenizi sağlar.
123 | Alt TestAverageFormula()Aralık("N11").Formül = "=Ortalama(B11:M11)"Alt Bitiş |
FormulaR1C1 Yöntemini Kullanma
FomulaR1C1 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 TestAverageFormula()Aralık("N11").Formül = "=Ortalama(RC[-12]:RC[-1])"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 daha sonra doğrudan solundaki 12 hücredeki değerlerin ortalamasını alır ve yanıtı ActiveCell'inize yerleştirir. ORTALAMA 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 N11'de bir değer yerine bir formül olacak.