Comment faire la moyenne des valeurs dans Excel via VBA ?
Dans Excel, vous pouvez utiliser VBA pour calculer les valeurs moyennes à partir d’une plage de cellules ou de plusieurs plages. Et, dans ce tutoriel, nous allons apprendre les différentes façons de l’utiliser.
Moyenne en VBA en utilisant WorksheetFunction
Dans VBA, il existe plusieurs fonctions que vous pouvez utiliser, mais il n’y a pas de fonction spécifique à cette fin. Cela ne signifie pas que nous ne pouvons pas faire une moyenne. Dans VBA, il existe une propriété appelée WorksheetFunction qui peut vous aider à appeler des fonctions dans un code VBA.
Faisons la moyenne des valeurs de la plage A1: A10.
- Entrez d’abord la propriété de la fonction de feuille de calcul, puis sélectionnez la fonction MOYENNE dans la liste.
- Ensuite, vous devez entrer une parenthèse de départ comme vous le faites lors de la saisie d’une fonction dans la feuille de calcul.
- Après cela, nous devons utiliser l’objet range pour faire référence à la plage pour laquelle nous voulons calculer la moyenne.
- À la fin, tapez une parenthèse fermante et affectez la valeur de retour de la fonction à la cellule B1.
Application.WorksheetFunction.Average(Range("A1:A10"))
Maintenant, lorsque vous exécutez ce code , il calcule la moyenne des valeurs que vous avez dans la plage A1: A10 et entre la valeur dans la cellule B1.
Valeurs moyennes d’une colonne entière ou d’une ligne
Dans ce cas, il vous suffit de spécifier une ligne ou une colonne au lieu de la plage que nous avons utilisée dans l’exemple précédent.
'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"))
Utiliser VBA pour faire la moyenne des valeurs de la sélection
Supposons maintenant que vous souhaitiez calculer la valeur moyenne des cellules sélectionnées uniquement dans la mesure où vous pouvez utiliser un code comme celui-ci.
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
Dans le code ci-dessus, nous avons utilisé la sélection, puis l’avons spécifiée dans la variable « sRange », puis nous avons utilisé l’adresse de cette variable de plage pour obtenir la moyenne.
Moyenne VBA toutes les cellules ci-dessus
Le code suivant prend toutes les cellules du dessus et leurs valeurs moyennes et entre le résultat dans la cellule sélectionnée .
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
Moyenne d’une plage dynamique à l’aide de VBA
Et de la même manière, vous pouvez utiliser une plage dynamique tout en utilisant VBA pour faire la moyenne des valeurs.
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
Faire la moyenne d’une colonne dynamique ou d’une ligne
De la même manière, si vous souhaitez utiliser une colonne dynamique, vous pouvez utiliser le code suivant qui prendra la colonne de la cellule active et la moyenne de toutes les valeurs que vous y avez.
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
Et pour une rangée.
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