Sum excel'de vba aracılığıyla nasıl kullanılır?
Excel’de, bir hücre aralığından veya birden çok aralıktan değerlerin toplamını hesaplamak için VBA’yı kullanabilirsiniz. Ve bu derste onu kullanabileceğimiz farklı yolları öğreneceğiz.
WorksheetFunction kullanarak VBA’da toplama
VBA’da kullanabileceğiniz çeşitli işlevler vardır ancak bu amaç için özel bir işlev yoktur. Bu, bir miktar yapamayacağımız anlamına gelmez. VBA’da, VBA kodundaki işlevleri çağırmanıza yardımcı olabilecek WorksheetFunction adlı bir özellik vardır.
A1:A10 aralığındaki değerlerin toplamını düşünün.
- Önce çalışma sayfası işlev özelliğini girin, ardından listeden TOPLA işlevini seçin.
- Daha sonra, e-tabloya bir fonksiyon girerken yaptığınız gibi bir başlangıç parantezi girmelisiniz.
- Bundan sonra toplamını hesaplamak istediğimiz aralığı ifade etmek için range nesnesini kullanmamız gerekiyor.
- Sonunda bir kapatma parantezi yazın ve işlevin dönüş değerini B1 hücresine atayın.
Range ("B1") = Application.WorksheetFunction.Sum(Range("A1:A10"))
Artık bu kodu çalıştırdığınızda A1:A10 aralığında sahip olduğunuz değerlerin toplamını hesaplıyor ve değeri B1 hücresine giriyorsunuz .
Bir sütunun veya satırın tamamının değerlerinin toplamı
Bu durumda önceki örnekte kullandığımız aralık yerine bir satır veya sütun belirtmeniz yeterlidir.
' for the entire column A Range ("B1") = Application.WorksheetFunction.Sum( Range ("A:A")) ' for entire row 1 Range ("B1") = Application.WorksheetFunction.Sum( Range ("1:1"))
Seçim değerleri eklemek için VBA’yı kullanın
Şimdi, bunun gibi bir kod kullanabildiğiniz için yalnızca seçili hücrelerin değerini toplamak istediğinizi varsayalım.
Sub vba_sum_selection() Dim sRange As Range Dim iSum As Long On Error GoTo errorHandler Set sRange = Selection iSum = WorksheetFunction.Sum(Range(sRange.Address)) MsgBox iSum errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
Yukarıdaki kodda seçimi kullandık, ardından “sRange” değişkeninde belirttik, ardından toplamı elde etmek için bu range değişkeninin adresini kullandık.
Yukarıdaki tüm hücrelerin VBA toplamı
Aşağıdaki kod tüm hücreleri ve toplam değerleri çıkarır ve sonucu seçilen hücreye girer.
Sub vba_auto_sum() Dim iFirst As String Dim iLast As String Dim iRange As Range On Error GoTo errorHandler iFirst = Selection. End (xlUp). End (xlUp).Address iLast = Selection. End (xlUp).Address Set iRange = Range(iFirst & ":" & iLast) ActiveCell = WorksheetFunction.Sum(iRange) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
VBA kullanarak dinamik aralık ekleme
Benzer şekilde, değer eklemek için VBA’yı kullanırken dinamik aralığı kullanabilirsiniz.
Sub vba_dynamic_range_sum() Dim iFirst As String Dim iLast As String Dim iRange As Range On Error GoTo errorHandler iFirst = Selection.Offset(1, 1).Address iLast = Selection.Offset(5, 5).Address Set iRange = Range(iFirst & ":" & iLast) ActiveCell = WorksheetFunction.Sum(iRange) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
Dinamik bir sütun veya satır ekleme
Benzer şekilde dinamik bir sütun kullanmak istiyorsanız, aktif hücrenin sütununu alıp orada sahip olduğunuz tüm değerleri toplayacak aşağıdaki kodu kullanabilirsiniz.
Sub vba_dynamic_column() Dim iCol As Long On Error GoTo errorHandler iCol = ActiveCell.Column MsgBox WorksheetFunction.Sum(Columns(iCol)) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
Ve bir sıra için.
Sub vba_dynamic_row() Dim iRow As Long On Error GoTo errorHandler iRow = ActiveCell.Row MsgBox WorksheetFunction.Sum(Rows(iCol)) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
SUMIF’i VBA ile kullanma
Toplamda olduğu gibi, aşağıdaki örnekteki gibi kriterlere sahip değerler eklemek için ETOPLA fonksiyonunu kullanabilirsiniz.
Sub vba_sumif() Dim cRange As Range Dim sRange As Range Set cRange = Range ("A2:A13") Set sRange = Range ("B2:B13") Range ("C2") = _ WorksheetFunction.SumIf(cRange, "Product B", sRange) End Sub