Mike ha tre celle (A1: A3) che mostrano i risultati dei calcoli. Ha bisogno di un modo per determinare il valore massimo che è mai apparso in una di queste celle e memorizzare quel valore nella cella E5. Sa come ottenere il massimo dai tre, ma quando ricalcola il foglio di lavoro, se i valori in A1: A3 sono inferiori al valore massimo in E5 (in base alle precedenti determinazioni del massimo in A1: A3), allora E5 non dovrebbe cambiare. In altre parole, E5 dovrebbe cambiare solo se ciò che è in A1: A3 è maggiore di ciò che è in E5. Mike non è sicuro di come eseguire un tale calcolo.

Esistono due modi per risolvere questo problema. Il primo è creare una semplice formula da inserire nella cella E5:

=MAX(A1:A3,E5)

La funzione MAX esamina i vari valori a cui fa riferimento e quindi restituisce il massimo di essi, esattamente ciò che si desidera. Tuttavia, poiché questa formula viene inserita nella cella E5 e fa riferimento anche a E5, restituirà un errore. Questo perché la formula crea un riferimento circolare. Excel può gestirli, ma è necessario apportare una piccola modifica alla configurazione per farlo:

  1. Scegli Opzioni dal menu Strumenti. Excel visualizza la finestra di dialogo Opzioni.

  2. Visualizza la scheda Calcolo. (Vedi figura 1.)

  3. Assicurati che la casella di controllo Iterazione sia selezionata.

  4. Fare clic su OK.

Ora Excel gestirà i riferimenti circolari, come la semplice formula che hai inserito nella cella E5.

Il secondo approccio consiste nell’utilizzare una macro per eseguire il calcolo. Questo approccio può essere preferito perché potresti non voler (per qualche motivo) abilitare i riferimenti circolari nella tua cartella di lavoro. Il seguente è in realtà un gestore di eventi, aggiunto al codice per il foglio di lavoro. (Metodo più semplice:

Fare clic con il pulsante destro del mouse sulla scheda del foglio, visualizzare la finestra del codice dal menu contestuale risultante e aggiungere la macro a quella finestra del codice.)

Private Sub Worksheet_Calculate()

Dim dMax As Double     dMax = Application.WorksheetFunction.Max(Range("A1:A3"))

If dMax > Range("E5") Then         Application.EnableEvents = False         Range("E5") = dMax         Application.EnableEvents = True     End If End Sub

La macro viene attivata ogni volta che il foglio di lavoro viene ricalcolato. Afferra il massimo di A1: A3 e lo confronta con quello che è in E5. Solo se è maggiore, tale valore viene inserito in E5.

_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 (10915) si applica a Microsoft Excel 97, 2000, 2002 e 2003.

Puoi trovare una versione di questo suggerimento per l’interfaccia a barra multifunzione di Excel (Excel 2007 e versioni successive) qui: