Formula generica
(=MAX(IF(range=criteria,values)))
Sommario
Per ottenere un valore massimo in base ai criteri, è possibile utilizzare la funzione MAX insieme alla funzione SE in una formula di matrice. Nell'esempio mostrato, la formula nella cella G6 è:
(=MAX(IF(names=F6,times)))
Dove names è l'intervallo denominato B6: B17 e times è l'intervallo denominato D6: D17.
Note: questa è una formula di matrice e deve essere inserita con Control + Maiusc + Invio. Le versioni successive di Excel hanno una funzione MAXIFS, vedere la nota di seguito.
Spiegazione
La funzione IF viene valutata per prima. Il test logico è un'espressione che verifica tutti i nomi:
IF(names=F6 // logical test
Il risultato è un array di valori VERO / FALSO come questo:
(TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE)
I valori TRUE corrispondono alle righe in cui il nome è "Hannah". Per tutti gli altri nomi, il valore è FALSE. Il "valore se vero" per IF è l'intervallo denominato times , che contiene l'intero insieme di orari. Non viene fornito alcun "valore se falso":
IF(names=F6,times)
Il risultato finale di IF è un array come questo:
(0.000868055555555556;FALSE;FALSE;0.000902777777777778;FALSE;FALSE;0.000914351851851852;FALSE;FALSE;0.000833333333333333;FALSE;FALSE)
Nota: i tempi di Excel sono valori frazionari, il che spiega i decimali lunghi.
La funzione IF agisce come un filtro. Solo i valori di tempo associati a TRUE passano attraverso il filtro, gli altri valori vengono sostituiti con FALSE.
La funzione IF consegna questo array direttamente alla funzione MAX, che ignora automaticamente i valori FALSE e restituisce il tempo massimo nell'array.
Con MAXIFS
La funzione MAXIFS, disponibile in Excel O365 ed Excel 2019, è progettata per restituire un valore massimo basato su uno o più criteri senza la necessità di una formula di matrice. Con MAXIFS, la formula in G6 è:
=MAXIFS(times,names,F6)