Come calcolare la media dei valori in excel tramite vba?
In Excel, puoi utilizzare VBA per calcolare i valori medi da un intervallo di celle o più intervalli. E, in questo tutorial, impareremo i diversi modi per usarlo.
Media in VBA utilizzando WorksheetFunction
In VBA è possibile utilizzare diverse funzioni , ma non esiste una funzione specifica per questo scopo. Ciò non significa che non possiamo fare una media. In VBA esiste una proprietà chiamata WorksheetFunction che può aiutarti a chiamare funzioni nel codice VBA.
Facciamo la media dei valori nell’intervallo A1:A10.
- Per prima cosa inserisci la proprietà della funzione del foglio di lavoro, quindi seleziona la funzione MEDIA dall’elenco.
- Successivamente, devi inserire una parentesi iniziale come fai quando inserisci una funzione nel foglio di calcolo.
- Successivamente, dobbiamo utilizzare l’oggetto intervallo per fare riferimento all’intervallo di cui vogliamo calcolare la media.
- Alla fine, digita una parentesi di chiusura e assegna il valore restituito dalla funzione alla cella B1.
Application.WorksheetFunction.Average( Range ("A1:A10"))
Ora quando esegui questo codice calcola la media dei valori presenti nell’intervallo A1: A10 e inserisce il valore nella cella B1.
Valori medi di un’intera colonna o riga
In questo caso, devi solo specificare una riga o una colonna invece dell’intervallo utilizzato nell’esempio precedente.
'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"))
Utilizzare VBA per calcolare la media dei valori di selezione
Supponiamo ora di voler calcolare il valore medio delle celle selezionate solo perché puoi utilizzare un codice come questo.
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
Nel codice precedente, abbiamo utilizzato la selezione, quindi l’abbiamo specificata nella variabile “sRange”, quindi abbiamo utilizzato l’indirizzo di questa variabile di intervallo per ottenere la media.
VBA media tutte le celle sopra
Il codice seguente prende tutte le celle sopra e i loro valori medi e inserisce il risultato nella cella selezionata .
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
Media di un intervallo dinamico utilizzando VBA
Allo stesso modo, puoi utilizzare l’intervallo dinamico mentre usi VBA per calcolare la media dei valori.
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
Media di una colonna o riga dinamica
Allo stesso modo, se desideri utilizzare una colonna dinamica, puoi utilizzare il seguente codice che prenderà la colonna della cella attiva e la media di tutti i valori che hai lì.
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
E per una fila.
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