MAX, MIN, MEDIA con formule matriciali.

Un recente problema è il motivo di questo articolo: "nella colonna A di un foglio di lavoro, ho una serie di nominativi, nella colonna B ho dei valori numerici correlati ai nominativi; come posso fare per trovare il valore minimo e il valore massimo tra i valori, relativi ad un preciso nominativo?"

Una situazione simile a questa:

a parte i nomi di fantasia, si nota comunque che c'è ripetitività nei nomi: ogni nome può essere riportato più volte. Per poter ottenere il minimo o il massimo o la media per ogni nome riportato in elenco, una soluzione può essere quella di applicare un filtro su un nome, seguendo il primo esempio riportato nell'articolo "Somma e Max su dati filtrati" presente su questo sito, sezione vba.

Senza ricorrere al vba è però possibile usare formule matriciali da inserire in celle del foglio di lavoro; dovremo usare un'altra cella dove scriveremo di volta in volta il nome di cui vogliamo max, min, e media, ed avremo sempre in vista questi valori.

Ricordo che per inserire formule matriciali dovremo usare la combinazione di tasti : CTRL+SHIFT + INVIO al posto del solo INVIO, se non si adotta questa sequenza la formula non sarà matriciale e genererà un errore. La matriciale si riconosce perchè racchiusa tutta tra due parentesi graffe.

Usiamo quindi la cella A1 come cella dove scrivere il nome che servirà alla matriciale come argomento di ricerca. Chiaramente ognuno userà le celle che vorrà. Vediamo comunque le formule: per tutte e tre impostiamo la condizione SE per verificare se nell'intervallo dei nomi (ho usato A1:A13, ma potrà essere un intervallo lungo quanto ci pare, comprendente anche celle al momento vuote, idem per l'intervallo assegnato alle funzioni MIN, MAX, MEDIA, ma nella colonna dove saranno i valori): se si verifica il riscontro del nome scritto in A1, la matriciale cercherà il Valore MAX (o MIN, o MEDIA) tra tutti i valori (in B) correlati al nome (in A1) SE il nome verrà trovato in A5:A13:

  • {=MAX(SE((A5:A13)=A1;B5:B13;""))}  ed otterremo il valore massimo presente se in A1avremo scritto "pluto" = 75

  • {=MIN(SE((A5:A13)=A1;B5:B13;""))}  ed otterremo il valore minimo presente se in A1avremo scritto "pluto" = 10

  • {=MEDIA(SE((A5:A13)=A1;B5:B13;""))} - ed otterremo il valore medio presente se in A1avremo scritto "pluto" = 35,833333

e questo il risultato visivo; le celle gialle ospitano le formule viste sopra:

 

 

Buon lavoro.

prelevato sul sito www.ennius.altervista.org