Vba aracılığıyla excel'deki değerlerin ortalaması nasıl alınır?

Excel’de, bir hücre aralığından veya birden çok aralıktan ortalama değerleri hesaplamak için VBA’yı kullanabilirsiniz. Ve bu derste onu kullanmanın farklı yollarını öğreneceğiz.

WorksheetFunction kullanılarak VBA’da ortalama

VBA’da kullanabileceğiniz çeşitli işlevler vardır ancak bu amaç için özel bir işlev yoktur. Bu ortalama alamayacağımız anlamına gelmiyor. VBA’da, VBA kodundaki işlevleri çağırmanıza yardımcı olabilecek WorksheetFunction adlı bir özellik vardır.

elektronik tablo işlevini kullanarak vba'da ortalama

A1:A10 aralığındaki değerlerin ortalamasını alalım.

  1. Önce çalışma sayfası işlev özelliğini girin, ardından listeden ORTALAMA işlevini seçin.
    worksheet-function-average
  2. Daha sonra, e-tabloya bir fonksiyon girerken yaptığınız gibi bir başlangıç parantezi girmelisiniz.
    enter-starting-paranthesis
  3. Bundan sonra ortalamasını hesaplamak istediğimiz aralığa atıfta bulunmak için range nesnesini kullanmamız gerekiyor.
    use-the-range-object
  4. Sonunda bir kapatma parantezi yazın ve işlevin dönüş değerini B1 hücresine atayın.
    type-close-pranthesis
 Application.WorksheetFunction.Average( Range ("A1:A10"))

Artık bu kodu çalıştırdığınızda A1:A10 aralığında sahip olduğunuz değerlerin ortalamasını hesaplıyor ve değeri B1 hücresine giriyor.

çalıştırma kodu-hesaplama-ortalama

Bir sütunun veya satırın tamamının ortalama değerleri

Bu durumda önceki örnekte kullandığımız aralık yerine sadece bir satır veya sütun belirtmeniz yeterli olacaktır.

 'for the entire column A Range ("B1") = Application.WorksheetFunction.Average( Range ("A:A")) 'for entire row 1 Range ("B1") = Application.WorksheetFunction.Average( Range ("1:1"))

Seçim değerlerinin ortalamasını almak için VBA’yı kullanın

Şimdi bu gibi kodları kullanabildiğiniz için yalnızca seçilen hücrelerin ortalama değerini hesaplamak istediğinizi varsayalım.

 Sub vba_average_selection() Dim sRange As Range Dim iAverage As Long On Error GoTo errorHandler Set sRange = Selection iAverage = WorksheetFunction.Average(Range(sRange.Address)) MsgBox iAverage Exit Sub 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 ortalamayı almak için bu range değişkeninin adresini kullandık.

VBA yukarıdaki tüm hücrelerin ortalamasını alır

Aşağıdaki kod yukarıdaki tüm hücreleri ve bunların ortalama değerlerini alıp sonucu seçilen hücreye girmektedir .

 Sub vba_auto_Average() 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.Average(iRange) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub

VBA kullanarak dinamik aralığın ortalamasını alma

Benzer şekilde VBA’yı kullanırken değerlerin ortalamasını almak için dinamik aralığı kullanabilirsiniz.

 Sub vba_dynamic_range_average() 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.Average(iRange) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub

Dinamik bir sütunun veya satırın ortalamasını alın

Benzer şekilde dinamik bir sütun kullanmak istiyorsanız, aktif hücrenin sütununu ve orada sahip olduğunuz tüm değerlerin ortalamasını alacak aşağıdaki kodu kullanabilirsiniz.

 Sub vba_dynamic_column() Dim iCol As Long On Error GoTo errorHandler iCol = ActiveCell.Column MsgBox WorksheetFunction.Average(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.Average(Rows(iCol)) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub

Yorum ekle

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir