Somma dei valori massimi/minimi di sottoinsiemi |
![]() |
![]() |
![]() |
Scritto da Roberto Mensa |
Sabato 04 Dicembre 2010 09:15 |
a cura di Roberto Mensa e Paolo Ardizzoni
Propongo questo articolo come esempio per utilizzare in modo *spinto* varie funzionalità di Excel:
- Formule matriciali (utilizzate per restituire i risultati attesi senza l'uso di colonne di appoggio)
- Formattazione condizionale (per restituire visivamente la suddivisione dei sottogruppi)
- Convalida (per evidenziare con un cercho i valori massimi dei sottogruppi).
Formattazione e convalida sono utilizzate per restituire un risultato anche visivamente articolato ma sempre aggiornato in modo automatico al variare dei parametri che definiscono le dimensioni degli insiemi.
N.B.: In funzione dei dati vengono utilizzate formule che restituiscono numeri casuali e che si aggiornano ad ogni ricalcolo.
La convalida con cerchi rossi viene restituita sui dati presenti al momento della visualizzazione dei cerchi ma non si aggiorna a seguito di un eventuale ricalcolo (per cerchiare i valori massimi dei sottogruppi ... versione 97/2003: menu Strumenti>Verifica formule>Mostra barra degli strumenti Verifica formule ... Cerchia dati non validi; versione 2007/2010: barra Dati>Strumenti Dati>Convalida Dati..... Cerchia dati non validi) . Il quesito
Dato un intervallo di celle contenenti valori numerici, si vuole ottenere la somma dei massimi valori di tutti i sottoinsiemi in esso contenuti.
Un esempio chiarirà e servirà per spiegare le logiche che vengono usate dalle formule.
lo scopo è quello di sommare i massimi valori di ogni gruppo 3+40+9 ... il risultato atteso è quindi 52.
Si vedrà poi il caso in cui i dati sono disposti su una singola riga ad esempio nell'intervallo A2:I2 e analogamente con dimensione del sottoinsieme uguale a 3 la somma dei massimi valori avverrà sui gruppi:
In ultimo il caso dei dati disposti in una tabella ad esempio B2:G7 in cui i gruppi sono stabiliti definendo la loro altezza e larghezza ... ad esempio altezza 3 larghezza 3 ottenendo i quattro gruppi:
Calcolo con una colonna/riga di appoggioAnalizziamo il primo caso, quello coi dati su una colonna. Usufruendo di una colonna di appoggio è sufficiente valutare il massimo valore di un intervallo dimensionato correttamente e di volta in volta spostato. Le formule trascinate su tre righe potrebbero essere:
rng è un nome definito che restituisce l'intervallo dati (A1:A9) questa la parte più significativa della formula:
RIF.RIGA(A1) restituisce il numero di riga (1) della cella A1 (e 2,3 per A2, A3 nelle celle dove è trascinata) Le celle della colonna di appoggio verranno sommate per ottenere il risultato atteso. Calcolo senza appoggio
La faccenda si complica se vogliamo evitare l'uso della colonna di appoggio.
vediamo il procedimento sui dati dell'esempio ...
ottenendo la matrice {1\2\3\0,04\0,005\0,006\0,000007\0,000008\0,000009}
secondo passaggio: si esegue in ultimo la somma di {3\40\9}.
Questa logica viene usata anche nel caso dei dati su una riga e su quelli in una tabella (seppur in quest'ultimo caso siano resi più complessi soprattutto nell'identificazione degli scaglioni). Le Formule MatricialiDi seguito riporto le formule matriciali utilizzate nei tre casi: Dati in una colonna
Dati in una riga
Dati in una tabella
Formattazione condizionale e Convalida
Riporto le formule utilizzate nella formattazione condizionale e nella convalida nel caso dei dati disposti in tabella.
La definizione degli intervalli e il calcolo in questo caso avviene su un foglio diverso in alternativa si sarebbe potuto incorrere in riferimenti circolari. Qui a uso di legenda è presente l'elenco degli indirizzi e visualizzata la forma dei sottoinsiemi.
Nel foglio coi dati della tabella i sottoinsiemi si auto dimensionano e la convalida permette d'evidenziare i valori massimi.
Prima di impostare la formattazione condizionale ho colorato lo sfondo delle celle di arancione.
Ecco le formule per la Formattazione Condizionale selezionando l'intervallo a partire da B2:
In entrambe le condizioni viene impostato lo sfondo azzurro alle celle.
La convalida invece usa questa formula:
Qui sotto la visualizzazione nel caso dei dati in colonna. In questo caso e nel caso dei dati su una riga le formule sono più semplici e potete vederle aprendo il file allegato al fondo di questa pagina.
Conclusioni
Analogamente al calcolo della somma dei massimi valori è facile calcolare la somma dei minimi.
Per le formule usate nella colonna di appoggio è sufficiente sostituire MAX con MIN. In quelle autonome è necessario modificare la matrice k usata come secondo argomento della funzione GRANDE. Anche se meno immediata la modifica da apportare è altrettanto semplice. Riporto di seguito la formula che sarebbe necessario utilizzare per i tre casi trattati:
Dati disposti su una colonna
Dati disposti su una riga
Dati disposti in una tabella
E se volessimo la somma dei 2 maggiori valori di ogni sottogruppo?
Le formule della colonna di appoggio andrebbero drasticamente modificate, mentre alle matriciali è sufficiente un
piccolo ritocco. Basta aggiungere una colonna alla matrice usata come secondo argomento di GRANDE. Vediamo il solo caso dei dati disposti su una riga (in quanto la modifica è identica per tutte e tre le formule):
... 1 è stato sostituito con {1;2} così da trasformare la vecchia {1\4\7} (guarda l'esempio) in {1;2\4;5\7;8}.
Un'ultima considerazione riguarda la scelta su quale formula usare ... Personalmente opterei per usare una colonna di appoggio. Le formule matriciali in questo, come in altri casi risultano più difficili da adattare perchè la logica con cui lavorano è più complicata, inoltre spesso comportano un uso maggiore della memoria e delle risorse. Io le adoro come gioco e come sfida, ma difficilmente le uso nel lavoro quotidiano.
Nota: questo articolo è una copia autorizzata dall'autore Roberto Mensa. L'originale (eventualmente più aggiornato) si trova all'indirizzo: https://sites.google.com/site/e90e50/user/somma-max-sottogruppi
Sistema operativo: WindowsApplicazioni: Excel 97/2003, Excel 2007/2010 |
Ultimo aggiornamento Lunedì 06 Dicembre 2010 16:30 |