Utilizzo di SUM in una macro (Microsoft Excel)
Bob ha la necessità di utilizzare la funzione SUM in una macro per trovare la somma di tutti i valori in una colonna. Il problema è che il numero di celle da sommare varierà; per una esecuzione della macro potrebbe essere di 100 celle, mentre per la successiva potrebbe essere 300 e per la terza solo 25.
Innanzitutto, è facile utilizzare la maggior parte delle funzioni del foglio di lavoro (come SUM) dall’interno di una macro. Tutto quello che devi fare è anteporre al nome della funzione “Application.WorksheetFunction”. o semplicemente “WorksheetFunction”. Quindi, se sai che ogni esecuzione della macro richiederà la somma di A1: A100, poi A1: A300 e infine A1: A25, potresti usare una macro come questa:
Public Sub Sum_Demo() Dim myRange Dim Results Dim Run As Long For Run = 1 To 3 Select Case Run Case 1 myRange = Worksheets("Sheet1").Range("A1", "A100") Case 2 myRange = Worksheets("Sheet1").Range("A1", "A300") Case 3 myRange = Worksheets("Sheet1").Range("A1", "A25") End Select Results = WorksheetFunction.Sum(myRange) Range("B" & Run) = Results Next Run End Sub
Questa macro utilizza un For. . . Ciclo successivo per specificare diversi intervalli di celle da sommare. Quindi utilizza la funzione del foglio di lavoro SOMMA per assegnare la somma alla variabile Risultati, che viene (finalmente) inserita in una cella nella colonna B. I risultati della prima esecuzione vengono inseriti in B1, la seconda in B2 e la terza in B3 .
Sebbene questa particolare macro possa non essere così utile, mostra diverse tecniche utili, come come definire un intervallo denominato, come utilizzare la funzione SUM e come inserire la somma in una cella. Ciò che la macro non fa è mostrare come selezionare un numero variabile di celle da sommare. Per fare ciò, è meglio fare affidamento sul metodo End dell’oggetto Range. La seguente riga di codice mostra come riempire la somma dell’intervallo che inizia da A1 e si estende appena prima della prima cella vuota nella colonna:
myRange = ActiveSheet.Range("A1", Range("A1").End(xlDown)) Range("B1") = WorksheetFunction.Sum(myRange)
Si noti che un intervallo (myRange) è definito come che inizia con A1 e si estende attraverso qualsiasi cosa restituisca il metodo End. Questo viene quindi sommato e inserito in B1.
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (3217) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: