Utilizzando SUM in una macro

Bob ha una necessità di utilizzare la funzione SOMMA in una macro per trovare la somma di tutti i valori in una colonna. Il problema è che il numero di celle da sommati varierà; per una corsa della macro potrebbe essere 100 cellule, mentre sul successivo potrebbe essere 300 e il terzo solo 25.

Innanzitutto, è facile da usare maggior parte delle funzioni del foglio di lavoro (come SUM) all'interno di una macro. Tutto quello che dovete fare è far precedere il nome della funzione con "Application.WorksheetFunction." o semplicemente "WorksheetFunction." Quindi, se si sa che ogni esecuzione della macro richiederà A1 sommando: A100, poi A1: A300, e, infine, A1: A25, è possibile utilizzare una macro come questa:

Public Sub Sum_Demo ()
MyRange Dim
Risultati Dim
Run Dim As Long

Per Run = 1 Per 3
Select Case Run
Caso 1
myRange = Worksheets ("Sheet1"). Range ("A1", "A100")
Caso 2
myRange = Worksheets ("Sheet1"). Range ("A1", "A300")
Caso 3
myRange = Worksheets ("Sheet1"). Range ("A1", "A25")
End Select
Risultati = WorksheetFunction.Sum (myRange)
Gamma ("B" & Run) = Risultati
Successivo Run
End Sub

Questa macro utilizza un For. . . Ciclo successivo secondo diversi intervalli di celle da sommare. Si utilizza quindi la funzione di foglio SUM assegnare somma alla variabile risultati, che è (finalmente) infilati in una cella nella colonna B. I risultati della prima prova vengono messi in B1, B2 in secondo, e il terzo in B3 .

Mentre questo macro particolare, non può essere che utile, mostra diverse tecniche utili, come il modo di definire un intervallo denominato, come utilizzare la funzione SOMMA, e come farcire la somma in una cella. Che la macro non fa è quello di mostrare come selezionare un numero variabile di cellule a riassumere. Per fare questo, è meglio fare affidamento sul metodo End dell'oggetto Range. La seguente riga di codice mostra come si può farcire la somma della gamma a partire da A1 e si estende a poco 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 inizio con A1 ed estendentesi attraverso qualunque sia il metodo End rendimenti. Questo viene poi riassunta e insaccato in B1.

ExcelTips è la vostra fonte per la formazione Microsoft Excel conveniente. Questo suggerimento (3217) si applica a Microsoft Excel 97, 2000, 2002, e 2003. È possibile trovare una versione di questo suggerimento per l'interfaccia ribbon di Excel (Excel 2007 e versioni successive) qui: Utilizzando SUM in una macro.