Sommare valori di celle dei fogli della stessa cartella con riepilogo su un foglio. - dal 04/09/04 pagina vista: volte Un esercizio interessante per ottenere un totale di valori presenti in determinate celle di ogni foglio di una cartella. Supponiamo di avere una cartella con più fogli, magari un foglio per ogni mese dell'anno, oppure un foglio per ogni persona che compone un team (agenti, dipendenti, militari, ecc. ecc.). Avremo l'accortezza e la necessità di rinominare ogni foglio assegnandoli un nome di pertinenza (gennaio, febbraio, marzo, ecc., oppure Giorgi, Stefani, Ricci ecc., o ancora nomi di oggetti come viti, bulloni, chiavi, ecc.). Supponiamo di lavorare su fogli mensili, e di avere su ogni foglio una determinata cella, la stessa per ogni foglio, dove otterremo il totale del mese, per esempio il totale delle vendite del mese. Altra condizione prevista: la possibilità di aggiungere Fogli, nominandoli opportunamente. L'esercizio quindi si articola sulla realizzazione di una routine che "spazzoli" tutti i fogli della cartella, sommando i valori che si troveranno in una determinata cella (la stessa per ogni foglio) e ci restituisca il totale in una cella di un Foglio che chiameremo opportunamente "Riepilogo", e dal quale lanceremo la macro associata ad un pulsante ivi residente. Dobbiamo quindi creare un ciclo che controlli il nome dei fogli, e se il nome è diverso da Riepilogo, prenda il valore che sarà in una cella (es.: C46) di ogni foglio e lo sommi ad un totale che va inizializzato a zero. Poi, siccome la macro la lanceremo dal foglio Riepilogo, quindi il foglio attivo in quel momento, rendiamo la cella A1 (o qualunque altra vorrete) del foglio attivo uguale al totale. Questa la routine:
Per chi obiettasse che non sempre la cella che porta il totale di un foglio si può trovare alla stessa altezza (stessa riga) e stessa colonna degli altri fogli, suggerisco di considerare che nessuno ci vieta, per ogni foglio, di scegliere una cella col totale non necessariamente incolonnata ai valori, e magari posta in H1, e che sia la stessa per tutti i fogli. Dipenderà solo dai riferimenti alla zona da sommare, e quindi in H1 metteremo la nostra formula =SOMMA(D1:D500) o qualunque altro riferimento, purchè la funzione risieda in H1. Una variante all'esercizio appena visto, può essere questa: vogliamo sommare solo i valori delle celle di determinati fogli della stessa cartella, e per ogni "gruppo" di fogli vogliamo destinare il totale ottenuto ad una cella diversa del foglio Riepilogo. In questo caso però dovremo creare una diversificazione che "unisca" i vari fogli. Questo per far sì che si possano identificare in modo univoco tutti i fogli che appartengono al "gruppo" di cui vogliamo sommare le celle. Visto che possiamo usare il nome foglio per identificarlo, potremo aggiungere una stessa lettera o numero prima del nome del foglio, in modo da creare uniformità. Se volessimo quindi sommare le celle di tutti i fogli che corrispondono ai mesi dispari, ed ottenere al tempo stesso la somma di tutti i mesi pari, potremmo rinominare i fogli aggiungendo ad inizio nome una "d" per il gruppo dei mesi dispari, ed una "p" per quelli pari. (es.: dGennaio, dMarzo, dMaggio - pFebbraio, pAprile, pGiugno ecc.). Questa soluzione ci consentirà poi, leggendo la prima lettera del nome di un foglio, di definire la condizione di appartenenza. Dovremo poi inizializzare tanti totalizzatori per quanti "gruppi" abbiamo formato. Vediamo le istruzioni da usare in questo caso:
Tutte le alternative al tema sono applicabili: potrete assegnare dei valori reperiti tramite InputBox alle due variabili X e Y in modo da creare condizioni diversificate, oppure legare le condizioni alla lettura di valori presenti nei fogli in celle predeterminate, oppure ancora definire celle diverse da cui sommare i totali in funzione di condizioni legate ancora a valori posti in celle predeterminate, con cicli tipo:
Cioè: se il nome del foglio è diverso da Riepilogo (o il nome che vorrete) e la cella B3 (o quella che vorrete) è uguale a Luigi (o ciò che vorrete), allora incrementiamo il totalizzatore con il valore che sarà in D50 (o quella che vorrete), altrimenti incrementiamo col valore che sarà nella cella H10 (o quella che vorrete). Insomma, gli smaliziati capiranno che potranno crearsi tutte più condizioni differenziate lavorando sui SE, dipenderà solo dalle necessità che ognuno potrà avere.
Buon lavoro. prelevato sul sito www.ennius.altervista.org |