Come utilizzare sum in excel tramite vba?
In Excel, puoi utilizzare VBA per calcolare la somma dei valori da un intervallo di celle o più intervalli. E, in questo tutorial, impareremo i diversi modi in cui possiamo usarlo.
Somma 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 somma. In VBA esiste una proprietà chiamata WorksheetFunction che può aiutarti a chiamare funzioni nel codice VBA.
Considera la somma dei valori nell’intervallo A1:A10.
- Per prima cosa inserisci la proprietà della funzione del foglio di lavoro, quindi seleziona la funzione SOMMA 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 per il quale vogliamo calcolare la somma.
- Alla fine, digita una parentesi di chiusura e assegna il valore restituito dalla funzione alla cella B1.
Range ("B1") = Application.WorksheetFunction.Sum(Range("A1:A10"))
Ora quando esegui questo codice calcola la somma dei valori che hai nell’intervallo A1: A10 e inserisci il valore nella cella B1.
Somma dei valori di un’intera colonna o riga
In questo caso, specifica semplicemente una riga o una colonna invece dell’intervallo utilizzato nell’esempio precedente.
' 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"))
Utilizzare VBA per aggiungere valori di selezione
Supponiamo ora di voler sommare solo il valore delle celle selezionate poiché puoi utilizzare un codice come questo.
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
Nel codice precedente, abbiamo utilizzato la selezione, quindi l’abbiamo specificata nella variabile “sRange”, quindi abbiamo utilizzato l’indirizzo di questa variabile intervallo per ottenere la somma.
Somma VBA di tutte le celle sopra
Il codice seguente estrae tutte le celle, somma i valori e inserisce il risultato nella cella selezionata.
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
Aggiungi gamma dinamica utilizzando VBA
Allo stesso modo, puoi utilizzare l’intervallo dinamico mentre usi VBA per aggiungere valori.
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
Aggiungi una colonna o una riga dinamica
Allo stesso modo, se desideri utilizzare una colonna dinamica, puoi utilizzare il seguente codice che prenderà la colonna della cella attiva e sommerà tutti i valori che hai lì.
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
E per una fila.
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
Utilizza SOMMA.SE con VBA
Proprio come la somma, puoi utilizzare la funzione SOMMA.SE per aggiungere valori con criteri come nell’esempio seguente.
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