Alex analizza regolarmente gli ultimi dati del settore edile e ha bisogno di scrivere articoli sui dati. Spesso ha bisogno di evidenziare alcuni nuovi dati, come “la costruzione di edifici industriali è stata la più bassa dall’agosto 2019”. Alex si chiedeva se ci fosse un modo per automatizzare questo tipo di evidenziazione; se la colonna A contiene il mese e l’anno e la colonna B contiene i valori per quei periodi, Alex vorrebbe una formula nella colonna C che indica “questo valore è il più alto da aprile 2019” o “questo valore è il più basso da novembre 2016”.

Supponendo che il mese e l’anno elencati nella colonna A siano in realtà un valore di data di Excel (e non testo), è possibile creare facilmente una formula per restituire le informazioni desiderate. Se la riga 1 è occupata dalle intestazioni delle colonne, inserisci quanto segue nella cella C2:

=IF(ROW(B2)=2,"",IF(B2>MAX($B$1:B1), "this value is  the highest since " & TEXT(INDEX($A$1:A1,MATCH(MAX( $B$1:B1),$B$1:B1,0)), "mmmm yyyy"), IF(B2<MIN($B$1:B1), "this value is the lowest since " & TEXT(INDEX($A$1:A1, MATCH(MIN($B$1:B1),$B$1:B1,0)), "mmmm yyyy"),"")))

Ricorda che questa è un’unica formula e deve essere inserita tutta su una riga. Puoi copiare la formula tutte le righe necessarie nella colonna C e dovrebbe fornire le informazioni desiderate. Fa solo una notazione nella colonna C se il valore nella colonna B è maggiore del massimo o minore del minimo di tutti i valori precedenti nella colonna B.

Se hai un bel po ‘di dati nel tuo foglio di lavoro, potresti notare che la formula si traduce in lunghi tempi di ricalcolo. Se questo è il caso, potresti prendere in considerazione l’utilizzo di una macro che eseguirà l’analisi desiderata e fornirà le informazioni appropriate. La seguente macro guarda all’indietro le informazioni nella colonna B e fornisce un risultato “più basso dal” e “più alto dal” nelle colonne C e D.

Sub FindHiLow()

Dim orig_cell As Range     Dim orig_val As Integer     Dim orig_row As Integer     Dim rownum As Integer     Dim newcell As Range     Dim new_val As Integer     Dim lowrow As Integer     Dim hirow As Integer

Set orig_cell = ActiveCell     orig_row = ActiveCell.Row     orig_val = orig_cell.Value

' find lowest     lowrow = 0     For rownum = orig_cell.Row - 1 To 1 Step -1         Set newcell = Cells(rownum, 2)

new_val = newcell.Value         If orig_val >= new_val Then             lowrow = rownum             Exit For         End If     Next     If lowrow = 0 Then lowrow = 1     Cells(orig_row, 3).Value = "Lowest since " & Cells(lowrow, 1)



' find highest     hirow = 0     For rownum = orig_cell.Row - 1 To 1 Step -1         Set newcell = Cells(rownum, 2)

new_val = newcell.Value         If orig_val <= new_val Then             hirow = rownum             Exit For         End If     Next     If hirow = 0 Then hirow = 1     Cells(orig_row, 4).Value = "Highest since " & Cells(hirow, 1)

End Sub

_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 (10183) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 ed Excel in Office 365. Puoi trovare una versione di questo suggerimento per la vecchia interfaccia del menu di Excel qui: