Determinazione di “Massimo dal” o “Minimo dal” (Microsoft Excel)
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: