Hoe gemiddelde waarden in excel via vba?
In Excel kunt u VBA gebruiken om gemiddelde waarden te berekenen uit een celbereik of meerdere bereiken. En in deze tutorial leren we de verschillende manieren om het te gebruiken.
Gemiddelde in VBA met behulp van WorksheetFunction
In VBA zijn er verschillende functies die u kunt gebruiken, maar er is geen specifieke functie hiervoor. Dit betekent niet dat we geen gemiddelde kunnen nemen. In VBA is er een eigenschap genaamd WorksheetFunction waarmee u functies in VBA-code kunt aanroepen.
Laten we de waarden in het bereik A1:A10 middelen.
- Voer eerst de eigenschap van de werkbladfunctie in en selecteer vervolgens de functie GEMIDDELDE in de lijst.
- Vervolgens moet u een haakje beginnen in te voeren, net zoals u dat doet bij het invoeren van een functie in het werkblad.
- Daarna moeten we het bereikobject gebruiken om te verwijzen naar het bereik waarvoor we het gemiddelde willen berekenen.
- Typ aan het einde een haakje sluiten en wijs de retourwaarde van de functie toe aan cel B1.
Application.WorksheetFunction.Average( Range ("A1:A10"))
Wanneer u deze code nu uitvoert, wordt het gemiddelde van de waarden in het bereik A1:A10 berekend en wordt de waarde in cel B1 ingevoerd.
Gemiddelde waarden van een hele kolom of rij
In dit geval hoeft u alleen maar een rij of kolom op te geven in plaats van het bereik dat we in het vorige voorbeeld hebben gebruikt.
'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"))
Gebruik VBA om de selectiewaarden te middelen
Stel nu dat u alleen de gemiddelde waarde van geselecteerde cellen wilt berekenen, omdat u dergelijke code kunt gebruiken.
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
In de bovenstaande code hebben we de selectie gebruikt en deze vervolgens gespecificeerd in de variabele “sRange”. Vervolgens hebben we het adres van deze bereikvariabele gebruikt om het gemiddelde te verkrijgen.
VBA-gemiddelde van alle bovenstaande cellen
De volgende code neemt alle bovenstaande cellen en hun gemiddelde waarden en voert het resultaat in de geselecteerde cel in .
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
Een dynamisch bereik middelen met behulp van VBA
En op dezelfde manier kunt u dynamisch bereik gebruiken terwijl u VBA gebruikt om de waarden te middelen.
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
Het gemiddelde van een dynamische kolom of rij
Op dezelfde manier kunt u, als u een dynamische kolom wilt gebruiken, de volgende code gebruiken, die de kolom van de actieve cel en het gemiddelde van alle waarden die u daar heeft, overneemt.
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
En voor een rij.
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