Bu eğitim size VBA'da Excel Sum işlevini nasıl kullanacağınızı gösterecektir.
Toplam işlevi, en yaygın kullanılan Excel işlevlerinden biridir ve muhtemelen Excel kullanıcılarının kullanmayı öğrendiği ilk işlevdir. VBA'nın aslında bir eşdeğeri yoktur - bir kullanıcının VBA'daki yerleşik Excel işlevini aşağıdakileri kullanarak kullanması gerekir: Çalışma SayfasıFonksiyonu nesne.
Toplam Ç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. SUM işlevi bunlardan biridir.
123 | Alt TestFonksiyonuRange("D33") = Application.WorksheetFunction.Sum("D1:D32")Alt Bitiş |
SUM işlevinde en fazla 30 bağımsız değişkeniniz olabilir. Argümanların her biri ayrıca bir hücre aralığına da başvurabilir.
Aşağıdaki bu örnek, D1'den D9'a kadar olan hücreleri ekleyecektir.
123 | Alt TestSum()Range("D10") = Application.WorksheetFunction.SUM("D1:D9")Alt Bitiş |
Aşağıdaki örnek, D sütununa bir aralık ve F sütununa bir aralık ekleyecektir. Application nesnesini yazmazsanız, olduğu varsayılacaktır.
123 | Alt TestSum()Range("D25") = WorksheetFunction.SUM (Range("D1:D24"), Range("F1:F24"))Alt Bitiş |
Tek bir hücre aralığı için, hücrelerin önündeki formülde 'Aralık' kelimesini belirtmeniz gerekmediğine dikkat edin, kod tarafından varsayılır. Ancak, birden fazla argüman kullanıyorsanız, bunu yapmanız gerekir.
Bir Değişkene Toplam 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 AssignSumVariable()Sonucu Çift olarak karart'Değişkeni atasonuç = WorksheetFunction.SUM(Aralık("G2:G7"), Aralık("H2:H7"))'Sonucu gösterMsgBox "Aralıkların toplamı " & sonuçAlt Bitiş |
Bir Aralık Nesnesini Topla
Range nesnesine bir hücre grubu atayabilir ve ardından bu Range nesnesini Çalışma SayfasıFonksiyonu nesne.
123456789 | Alt TestSumRange()Aralık Olarak Karartma'hücre aralığını ataSet rng = Aralık("D2:E10")'formüldeki aralığı kullanAralık("E11") = Çalışma SayfasıFunction.SUM(rng)'aralık nesnesini serbest bırakRng ayarla = Hiçbir şeyAlt Bitiş |
Çoklu Aralık Nesnelerini Toplama
Benzer şekilde, birden çok Menzil Nesnesini toplayabilirsiniz.
123456789101112 | Alt TestSumMultipleRanges()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.SUM(rngA, rngB)'aralık nesnesini serbest bırakrngA'yı ayarla = Hiçbir şeyrngB'yi ayarla = Hiçbir şeyAlt Bitiş |
Tüm Sütun veya Satırın Toplamı
Bir sütunun tamamını veya bir satırın tamamını eklemek için Sum işlevini de kullanabilirsiniz.
Aşağıdaki bu prosedür, D sütunundaki tüm sayısal hücreleri toplayacaktır.
123 | Alt TestSum()Range("F1") = WorksheetFunction.SUM(Range("D:D")Alt Bitiş |
Aşağıdaki bu prosedür, Satır 9'daki tüm sayısal hücreleri toplayacaktır.
123 | Alt TestSum()Aralık("F2") = Çalışma SayfasıFunction.SUM(Range("9:9")Alt Bitiş |
Dizi Topla
Bir dizideki değerleri toplamak için WorksheetFunction.Sum'u da kullanabilirsiniz.
123456789101112 | Alt TestArray()Dim intA(1 - 5) Tamsayı OlarakTamsayı olarak Dim SumArray'diziyi doldurintA(1) = 15intA(2) = 20intA(3) = 25intA(4) = 30intA(5) = 40'diziyi topla ve sonucu gösterMsgBox Çalışma SayfasıFunction.SUM(intA)Alt Bitiş |
SumIf İşlevini Kullanma
Kullanılabilecek başka bir çalışma sayfası işlevi, SUMIF işlevidir.
123 | Alt TestSumIf()Aralık("D11") = Çalışma SayfasıFunction.SUMIF(Aralık("C2:C10"), 150, Aralık("D2:D10"))Alt Bitiş |
Yukarıdaki prosedür, yalnızca C sütunundaki karşılık gelen hücre = 150 ise, Aralık(D2:D10) içindeki hücreleri toplayacaktır.
Toplam Formül
kullandığınızda Çalışma SayfasıFonksiyon.SUM çalışma sayfanızdaki bir aralığa toplam eklemek için esnek bir formül değil, statik bir toplam 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, TestSum prosedürü Range(D2:D10)'u ekledi ve sonuç D11'e yerleştirildi. Formül çubuğunda görebileceğiniz gibi, bu sonuç bir rakamdır, formül değil.
Bu nedenle Aralık (D2:D10) içindeki değerlerden herhangi biri değişirse, D11'deki sonuç OLUMSUZ değiştirmek.
kullanmak yerine Çalışma SayfasıFonksiyon.SUMkullanarak bir hücreye Toplam İş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:D10 gibi belirli bir hücre aralığına işaret etmenizi sağlar.
123 | Alt TestToplamFormulaAralık("D11").Formül = "=TOPLA(D2:D10)"Alt Bitiş |
FormulaR1C1 Yöntemi
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 TestSumFormula()Aralık("D11").FormulaR1C1 = "=SUM(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 TestSumFormula()ActiveCell.FormulaR1C1 = "=TOPLA(R[-9]C:R[-1]C)"Alt Bitiş |
Çalışma sayfanızın neresinde olursanız olun, formül doğrudan onun üzerindeki 8 hücreyi toplayacak ve cevabı ActiveCell'inize yerleştirecektir. SUM işlevinin içindeki Aralık'a, 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 D11'de değer yerine formül olacak.