Grafico scorrevole su una lunga serie di dati biennali
Quando, nei corsi magari avanzati o nei più sacri testi su Excel, si parla dei grafici – ci avete fatto caso? - regolarmente si cita la solita miniserie di dati di vendite trimestrali. Sì ma cosa accade se i dati da graficizzare sono molto numerosi? Il modello qui proposto risolve questo annoso problema, mediante artifici e macro, direi proprio originali. Essendo anche abbastanza auto esplicativo converrà subito scaricarlo dal link seguente:
http://www.giannigiaccaglini.it/download/GraficoScorrevole.xlsmanche
oltretutto il lavoro si presenta abbastanza auto-esplicativo.
Supponiamo di voler graficizzare i dati relativi a un lungo periodo, diciamo un arco di tempo biennale, di cui riporto solo la parte iniziale posta nel foglio di lavoro d’apertura:
|
Anno 2007 |
|
|
|
|
|
Zona |
Gennaio 07 |
Febbraio 07 |
Marzo 07 |
Aprile 07 |
Maggio 07 |
|
Lombardia |
118,00 |
163,00 |
133,00 |
198,00 |
162,00 |
|
Nord ovest |
98,00 |
105,00 |
99,00 |
128,00 |
150,00 |
|
Nord est |
119,00 |
129,00 |
132,00 |
90,00 |
99,00 |
|
Emilia+centro |
97,00 |
83,00 |
84,00 |
85,00 |
91,00 |
|
Sud e isole |
87,00 |
92,00 |
88,00 |
79,00 |
88,00 |
|
Europa |
84,00 |
93,00 |
75,00 |
84,00 |
84,00 |
|
Mondo |
34,00 |
33,00 |
42,00 |
34,00 |
40,00 |
|
|
|
|
|
|
I mesi si estendono al Dicembre 2008. Subito sotto si noterà un grafico “umanamente” limitato a un trimestre. Se avessimo previsto l’intera serie avremmo visto un pasticciaccio brutto. Tutti subito comprendono che il pulsante, lì accanto, etichettato Scorri (ciclicamente) agisce come promette e infatti premendolo si vedranno i vari trimestri, dal primo del 2007 all’ultimo del 2008 per tornare al primo del 2007.
Curiosi come siamo, andiamo a vedere, con Alt+F11 la macro attaccata al pulsante (classico di Excel), con relativa Sub richiamata:
Sub ScorriTrimestre()
If Range("DatiTrim").Column = 23 Then
Range("B3:D10").Name = "DatiTrim"
Else
Range("DatiTrim").Offset(0, 3).Name = "DatiTrim"
End If
CambiaGrafico
End Sub
Sub CambiaGrafico()
ActiveSheet.ChartObjects("Grafico 3").Activate
ActiveChart.SetSourceData Source:= _
Union(Range("Articoli"), Range("DatiTrim"))
ActiveCell.Select
End Sub
Commenti essenziali. Il trucco base sta nel fatidico nome “DatiTrim” riassegnato dinamicamente: alla zona B3:D10 (primo trimestre) quando il grafico attuale punta all’ultimo del 2008, ossia se la colonna di Range(“DatiTrim”) corrente è pari a 23. Altrimenti? Beh la rassegnazione del nome “DatiTrim” con .Offset(0, 3) ecc. è affidata all’esegesi fai-da-te. Idem per l’istruzione centrale della routine CambiaGrafico che attinge la sorgente dati (SetSoruceData) dalla Union dell’intervallo pre-denominato “Articoli”, ovvero l’intervallo A3:A10 del modello, coi contenuti da “Zona” a “Mondo”, con l’intervallo mobile “DatiTrim”.
Nota Come si comprenderà e perdonerà, il nome “Articoli” nacque in una versione originaria, con “bulloni”, “viti”, “rondelle”... poi modificate in aree di vendita...
Altre macro, studiatevele e divertitevi
Per pigrizia, ma anche per non tediare i più bravi e riflessivi, a questo punto mi limito a descrivere le facili operazioni esplorative:
Ø Un clic sulla shape Vai al grande grafico (una shape “telaio”, in verità) ci porta al foglio per grafico, più eclatante di quello incorporato nel foglio di lavoro (notare che esso riporta in basso anche la tabella dati, per autonomia e maggior chiarezza);
Ø In esso si notano pulsanti etichettati Avanti, Indietro e Torna al Foglio1, di cui i primi due, mediante macro un po’ diverse da quella testé commentata, lavorano in modo non ciclico, ma scorrendo di mese in mese, nei due sensi;
Ø L’hyperlink locale Vai a Riepil. Trim. porta invece alla parte bassa del Foglio1, che si presenta come qui riportato.
|
Riepiloghi trimestrali |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Anno 2007 |
|
|
|
Anno 2008 |
|
|
|
|
Zona |
1° Trim 07 |
2° Trim 07 |
3° Trim 07 |
4° Trim 07 |
1° Trim 08 |
2° Trim 08 |
3° Trim 08 |
4° Trim 08 |
|
Lombardia |
541,00 |
429,00 |
396,00 |
398,00 |
461,00 |
474,00 |
493,00 |
449,00 |
|
Nord ovest |
401,00 |
342,00 |
385,00 |
343,00 |
366,00 |
358,00 |
382,00 |
326,00 |
|
Nord est |
319,00 |
336,00 |
349,00 |
332,00 |
371,00 |
354,00 |
372,00 |
332,00 |
|
Emilia+centro |
281,00 |
262,00 |
267,00 |
274,00 |
275,00 |
260,00 |
258,00 |
257,00 |
|
Sud e isole |
257,00 |
263,00 |
286,00 |
248,00 |
271,00 |
272,00 |
248,00 |
274,00 |
|
Europa |
251,00 |
256,00 |
246,00 |
271,00 |
244,00 |
243,00 |
258,00 |
263,00 |
|
Mondo |
98,00 |
109,00 |
100,00 |
97,00 |
116,00 |
126,00 |
116,00 |
84,00 |
|
|
|
|
|
|
|
|
|
Il grafico subito sottostante è più ampio ma sempre “umano”. Esso riporta i dati riepilogatici degli otto trimestri del biennio e stavolta non sono in ballo macro, bensì opportune ma facili funzioni =SOMMA() che tutti potranno controllare.
?>