Formula MAX IF di Excel per trovare il valore più grande con condizioni

  • Condividi Questo
Michael Brown

L'articolo mostra alcuni modi diversi per ottenere il valore massimo in Excel in base a una o più condizioni specificate dall'utente.

Nella nostra precedente esercitazione abbiamo visto gli usi più comuni della funzione MAX, che è stata progettata per restituire il numero più grande in un set di dati. In alcune situazioni, tuttavia, potrebbe essere necessario approfondire i dati per trovare il valore massimo in base a determinati criteri. Questo può essere fatto utilizzando alcune formule diverse e questo articolo spiega tutti i modi possibili.

    Formula MAX IF di Excel

    Fino a poco tempo fa, Microsoft Excel non disponeva di una funzione MAX IF integrata per ottenere il valore massimo in base a condizioni. Con l'introduzione di MAXIFS in Excel 2019, possiamo eseguire il massimo condizionale in modo semplice.

    In Excel 2016 e nelle versioni precedenti, è ancora necessario creare il proprio formula dell'array combinando la funzione MAX con un'istruzione IF:

    {=MAX(IF( intervallo_di_criteri = criteri , intervallo_massimo ))}

    Per vedere come funziona questa formula generica MAX IF su dati reali, si consideri il seguente esempio. Si supponga di avere una tabella con i risultati del salto in lungo di diversi studenti. La tabella include i dati di tre prove e si sta cercando il miglior risultato di un particolare atleta, ad esempio Jacob. Con i nomi degli studenti in A2:A10 e le distanze in C2:C10, la formula assume questa forma:

    =MAX(IF(A2:A10="Jacob", C2:C10))

    Tenete presente che la formula di una matrice deve essere sempre inserita premendo contemporaneamente i tasti Ctrl + Shift + Invio, per cui viene automaticamente circondata da parentesi graffe, come mostrato nell'immagine seguente (non è possibile digitare le parentesi graffe manualmente!).

    Nei fogli di lavoro reali, è più comodo inserire il criterio in qualche cella, in modo da poter cambiare facilmente la condizione senza modificare la formula. Quindi, digitiamo il nome desiderato in F1 e otteniamo il seguente risultato:

    =MAX(IF(A2:A10=F1, C2:C10))

    Come funziona questa formula

    Nel test logico della funzione IF, si confronta l'elenco di nomi (A2:A10) con il nome di destinazione (F1). Il risultato di questa operazione è una matrice di VERI e FALSI, dove i valori VERI rappresentano i nomi che corrispondono al nome di destinazione (Jacob):

    {FALSE;FALSE;FALSE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE}

    Per il valore_ se_vero forniamo i risultati del salto in lungo (C2:C10), in modo che se il test logico è valutato VERO, viene restituito il numero corrispondente della colonna C. L'opzione valore_ se_falso è omesso, il significato sarà solo un valore FALSE quando la condizione non è soddisfatta:

    {FALSE;FALSE;FALSE;FALSE;5,48;5,42;5,57;FALSE;FALSE;FALSE}

    Questo array viene inviato alla funzione MAX, che restituisce il numero massimo ignorando i valori FALSO.

    Suggerimento: per visualizzare le matrici interne descritte sopra, selezionare la parte corrispondente della formula nel foglio di lavoro e premere il tasto F9. Per uscire dalla modalità di valutazione della formula, premere il tasto Esc.

    Formula MAX IF con criteri multipli

    Quando è necessario trovare il valore massimo in base a più di una condizione, è possibile scegliere tra:

    Utilizzate le istruzioni IF annidate per includere ulteriori criteri:

    {=MAX(IF( criterio_range1 = criteri1 , SE( criterio_range2 = criteri2 , intervallo_massimo )))}

    Oppure gestire più criteri utilizzando l'operazione di moltiplicazione:

    {=MAX(IF(( criterio_range1 = criteri1 ) * ( criterio_range2 = criteri2 ), intervallo_massimo ))}

    Supponiamo di avere i risultati di ragazzi e ragazze in un'unica tabella e di voler trovare il salto più lungo tra le ragazze nel girone 3. Per farlo, inseriamo il primo criterio (femmina) in G1, il secondo criterio (3) in G2 e utilizziamo le seguenti formule per elaborare il valore massimo:

    =MAX(IF(B2:B16=G1, IF(C2:C16=G2, D2:D16))

    =MAX(IF((B2:B16=G1)*(C2:C16=G2), D2:D16))

    Poiché entrambe le formule sono di tipo array, ricordate di premere Ctrl + Shift + Invio per completarle correttamente.

    Come mostrato nella schermata sottostante, le formule producono lo stesso risultato, quindi quale utilizzare è una questione di preferenze personali. Per me, la formula con la logica booleana è più facile da leggere e da costruire, in quanto consente di aggiungere tutte le condizioni desiderate senza annidare ulteriori funzioni IF.

    Come funzionano queste formule

    La prima formula utilizza due funzioni IF annidate per valutare due criteri. Nel test logico della prima istruzione IF, si confrontano i valori della colonna Genere (B2:B16) con il criterio in G1 ("Femmina"). Il risultato è una matrice di valori VERO e FALSO, dove VERO rappresenta i dati che corrispondono al criterio:

    {FALSE; FALSE; FALSE; FALSE; TRUE; TRUE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; TRUE; TRUE; TRUE}.

    In modo analogo, la seconda funzione IF verifica i valori della colonna Round (C2:C16) rispetto al criterio in G2.

    Per il valore_se_vero Nella seconda istruzione IF, forniamo i risultati del salto in lungo (D2:D16) e in questo modo otteniamo gli elementi che hanno TRUE nei primi due array nelle posizioni corrispondenti (cioè gli elementi in cui il sesso è "femmina" e il round è 3):

    {FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; 4.63; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; 4.52}

    Questa matrice finale viene inviata alla funzione MAX, che restituisce il numero più grande.

    La seconda formula valuta le stesse condizioni all'interno di un singolo test logico e l'operazione di moltiplicazione funziona come l'operatore AND:

    Quando i valori VERO e FALSO vengono utilizzati in qualsiasi operazione aritmetica, vengono convertiti rispettivamente in 1 e 0. E poiché la moltiplicazione per 0 dà sempre zero, la matrice risultante ha 1 solo quando tutte le condizioni sono VERE. Questa matrice viene valutata nel test logico della funzione IF, che restituisce le distanze corrispondenti agli elementi 1 (VERO).

    MAX IF senza array

    Molti utenti di Excel, me compreso, hanno un pregiudizio nei confronti delle formule di matrice e cercano di eliminarle ogni volta che è possibile. Fortunatamente, Microsoft Excel dispone di alcune funzioni che gestiscono le matrici in modo nativo e possiamo utilizzare una di queste funzioni, ovvero SUMPRODUCT, come una sorta di "involucro" attorno a MAX.

    La formula MAX IF generica senza array è la seguente:

    =SUMPRODOTTO(MAX(( criterio_range1 = criteri1 ) * ( criterio_range2 = criteri2 ) * intervallo_massimo ))

    Naturalmente, se necessario, è possibile aggiungere altre coppie intervallo/criteri.

    Per vedere la formula in azione, utilizzeremo i dati dell'esempio precedente. L'obiettivo è ottenere il salto massimo di un'atleta donna nel terzo round:

    =SUMPRODOTTO(MAX(((B2:B16=G1) * (C2:C16=G2) * (D2:D16))))

    Questa formula viene eseguita con la normale pressione del tasto Invio e restituisce lo stesso risultato della formula MAX IF della matrice:

    Osservando più da vicino la schermata precedente, si può notare che i salti non validi contrassegnati con "x" negli esempi precedenti hanno ora valore 0 nelle righe 3, 11 e 15 e la prossima sezione ne spiega il motivo.

    Come funziona questa formula

    Come per la formula MAX IF, si valutano due criteri confrontando ogni valore delle colonne Gender (B2:B16) e Round (C2:C16) con i criteri delle celle G1 e G2. Il risultato sono due matrici di valori VERO e FALSO. Moltiplicando gli elementi delle matrici nelle stesse posizioni si convertono VERO e FALSO rispettivamente in 1 e 0, dove 1 rappresenta gli elementi che soddisfano entrambi i criteri. Il terzo elemento moltiplicatocontiene i risultati del salto in lungo (D2:D16). Poiché moltiplicando per 0 si ottiene zero, sopravvivono solo gli elementi che hanno 1 (VERO) nelle posizioni corrispondenti:

    {0; 0; 0; 0; 0; 4.63; 0; 0; 0; 0; 0; 0; 0; 0; 4.52}

    In caso intervallo_massimo contiene un qualsiasi valore di testo, l'operazione di moltiplicazione restituisce l'errore #VALORE, a causa del quale l'intera formula non funzionerà.

    La funzione MAX prende le mosse da qui e restituisce il numero più grande che soddisfa le condizioni specificate. La matrice risultante, composta da un singolo elemento {4,63}, passa alla funzione SUMPRODUCT, che restituisce il numero massimo in una cella.

    Nota: a causa della sua logica specifica, la formula funziona con le seguenti avvertenze:

    • L'intervallo in cui si cerca il valore più alto deve contenere solo numeri. Se ci sono valori di testo, viene restituito un errore #VALUE!
    • La formula non può valutare la condizione "non uguale a zero" in un insieme di dati negativi. Per trovare il valore massimo ignorando gli zeri, utilizzare una formula MAX IF o la funzione MAXIFS.

    Formula MAX IF di Excel con logica OR

    Per trovare il valore massimo quando qualsiasi delle condizioni specificate, si utilizza la già nota formula array MAX IF con la logica booleana, ma sommando le condizioni invece di moltiplicarle.

    {=MAX(IF(( criterio_range1 = criteri1 ) + ( criterio_range2 = criteri2 ), intervallo_massimo ))}

    In alternativa, è possibile utilizzare la seguente formula non di tipo array:

    =SUMPRODOTTO(MAX(((( criterio_range1 = criteri1 ) + ( criterio_range2 = criteri2 )) * intervallo_massimo ))

    A titolo di esempio, analizziamo il miglior risultato nei round 2 e 3. Tenete presente che nel linguaggio Excel il compito è formulato in modo diverso: restituire il valore massimo se il round è 2 o 3.

    Con i turni elencati in B2:B10, i risultati in C2:C10 e i criteri in F1 e H1, la formula è la seguente:

    =MAX(IF((B2:B10=F1) + (B2:B10=H1), C2:C10))

    Inserite la formula premendo la combinazione di tasti Ctrl + Maiusc + Invio e otterrete questo risultato:

    Il valore massimo con le stesse condizioni può essere trovato anche utilizzando questa formula non a matrice:

    =SUMPRODOTTO(MAX((B2:B10=F1) + (B2:B10=H1)) * C2:C10))

    Tuttavia, in questo caso è necessario sostituire tutti i valori "x" della colonna C con degli zeri, poiché SUMPRODUCT MAX funziona solo con dati numerici:

    Come funzionano queste formule

    La formula di matrice funziona esattamente come MAX IF con logica AND, tranne che per il fatto che si uniscono i criteri utilizzando l'operazione di addizione invece della moltiplicazione. Nelle formule di matrice, l'addizione funziona come l'operatore OR:

    Sommando i due array di VERO e FALSO (che risultano dalla verifica dei valori in B2:B10 rispetto ai criteri in F1 e H1) si ottiene un array di 1 e 0, dove 1 rappresenta gli elementi per i quali una delle due condizioni è VERA e 0 rappresenta gli elementi per i quali entrambe le condizioni sono FALSE. Di conseguenza, la funzione IF "mantiene" tutti gli elementi in C2:C10 ( valore_se_vero ) per i quali una qualsiasi condizione è VERA (1); i restanti elementi vengono sostituiti con FALSO perché il valore_se_falso non è specificato.

    La formula non array funziona in modo simile, con la differenza che invece del test logico di IF, si moltiplicano gli elementi dell'array degli 1 e degli 0 per gli elementi dell'array dei risultati del salto in lungo (C2:C10) nelle posizioni corrispondenti. In questo modo si annullano gli elementi che non soddisfano alcuna condizione (hanno 0 nel primo array) e si mantengono gli elementi che soddisfano una delle condizioni (hanno 1 nel primo array).array).

    MAXIFS - modo semplice per trovare il valore più alto con le condizioni

    Gli utenti di Excel 2019, 2021 ed Excel 365 sono liberi dal problema di domare gli array per costruire la propria formula MAX IF. Queste versioni di Excel offrono la tanto attesa funzione MAXIFS che rende la ricerca del valore più grande con le condizioni un gioco da ragazzi.

    Nel primo argomento di MAXIFS si inserisce l'intervallo in cui trovare il valore massimo (D2:D16 nel nostro caso) e negli argomenti successivi si possono inserire fino a 126 coppie intervallo/criterio. Ad esempio:

    =MAXIFS(D2:D16, B2:B16, G1, C2:C16, G2)

    Come mostrato nella schermata seguente, questa semplice formula non ha problemi a elaborare l'intervallo che contiene valori sia numerici che di testo:

    Per informazioni dettagliate su questa funzione, consultare la funzione MAXIFS di Excel con esempi di formule.

    Ecco come trovare il valore massimo con le condizioni in Excel. Vi ringrazio per la lettura e spero di vedervi sul nostro blog la prossima settimana!

    Eserciziario da scaricare

    Esempi di formula MAX IF di Excel (file .xlsx)

    Michael Brown è un appassionato di tecnologia dedicato con una passione per la semplificazione di processi complessi utilizzando strumenti software. Con oltre un decennio di esperienza nel settore tecnologico, ha affinato le sue competenze in Microsoft Excel e Outlook, nonché in Fogli Google e Documenti. Il blog di Michael è dedicato alla condivisione delle sue conoscenze e competenze con gli altri, fornendo suggerimenti e tutorial facili da seguire per migliorare la produttività e l'efficienza. Che tu sia un professionista esperto o un principiante, il blog di Michael offre spunti preziosi e consigli pratici per ottenere il massimo da questi strumenti software essenziali.