Trovare l’indirizzo del valore più basso in un intervallo (Microsoft Excel)
Quando si scrive una macro, è possibile trovare il valore più basso in un intervallo di celle utilizzando il metodo WorksheetFunction per applicare la funzione del foglio di lavoro MIN. Potrebbe essere necessario, tuttavia, non solo trovare il valore più basso nell’intervallo, ma anche l’indirizzo della prima cella che contiene quel valore.
Un modo semplice è passare semplicemente attraverso l’intervallo che si desidera esaminare e derivare sia il valore più basso che l’indirizzo della cella in esame, come di seguito:
Function FindLowestAddr(pRng As Range) As String Dim MinVal As Double Dim MinAddr As String Dim c As Range MinVal = pRng.Cells(1).Value MinAddr = pRng.Cells(1).Address For Each c in pRng If c.Value < MinVal Then MinVal = c.Value MinAddr = c.Address End If Next c FindLowestAddr = MinAddr End Function
Si noti che questo approccio non si basa affatto sulla funzione del foglio di lavoro MIN. Tuttavia, presenta uno svantaggio: non fa differenza tra le celle che contengono valori numerici e quelle che non lo fanno. In altre parole, se l’intervallo passato alla funzione contiene una cella vuota, si considera che quella cella contenga un valore zero, che potrebbe benissimo essere il valore più basso dell’intervallo.
Un modo per aggirare questo problema è fare affidamento sulle funzioni del foglio di lavoro all’interno della macro. La seguente macro utilizza le funzioni del foglio di lavoro MIN e MATCH per determinare la posizione del valore minimo e quindi l’indice (offset) di quella cella all’interno dell’intervallo.
Function GetAddr(rng As Range) As String Dim dMin As Double Dim lIndex As Long Dim sAddress As String With Application.WorksheetFunction dMin = .Min(rng) lIndex = .Match(dMin, rng, 0) End With GetAddr = rng.Cells(lIndex).Address End Function
Va notato che se si utilizza la macro solo per scoprire l’indirizzo perché si immaginava che non fosse possibile ottenere le informazioni desiderate senza la macro, è possibile eliminare completamente la macro utilizzando una formula del foglio di lavoro. Ad esempio, se desideri determinare l’indirizzo della cella con il valore più basso nell’intervallo denominato MyRange, puoi utilizzare quanto segue:
=ADDRESS(ROW(MyRange)+MATCH(MIN(MyRange),MyRange,0)-1,COLUMN(MyRange))
_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 (12744) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 ed Excel in Office 365. Puoi trovare una versione di questo suggerimento per l’interfaccia del menu precedente di Excel qui: