User‎ > ‎

Orologio Analogico - Grafico Excel combinato (Anello-Radar)

Questo è il primo esempio di come utilizzare i grafici di Excel per realizzare grafici a cruscotto.
Combinando il risultato visivo della lancetta affusolata (ottenuta con un grafico radar) a un grafico ad anello (per disegnare l'asse) è possibile creare grafici dal design accattivante.
Nell'esempio che propongo l'orologio analogico è semplicemente un grafico con 5 serie che utilizzano nomi definiti per disegnare le 3 lancette e le 2 gradazioni di ore e minuti. Non sono utilizzate celle del foglio e tutti i dati nascono dalle matrici definite nei nomi.
Solo Excel quindi?
Quasi ... 
Le macro permettono alle lancette di muoversi ma solo utilizzando il metodo OnTime per richiamare l'evento Calculate ogni secondo.
Qui sotto il risultato:
 
 

Definizione dei Nomi

 
secondi =MATR.PRODOTTO(((ASS(RIF.RIGA($1:$360)-(SECONDO((ADESSO()))*6+1))={359;1;0;179;180;181}))*{1;1;96;7;7;7};{1\1\1\1\1\1})+4

minuti =MATR.PRODOTTO(((ASS(RIF.RIGA($1:$360)-(MINUTO((ADESSO()))*6+1))={359;1;0;179;180;181}))*{75;75;95;6;6;6};{1\1\1\1\1\1})+5

ore =MATR.PRODOTTO(((ASS(RIF.RIGA(Orologio!$1:$360)-INT(RESTO(ORA(ADESSO());12)*30+1+MINUTO(ADESSO())*1/2))={359;1;0;179;180;181}))*{47;47;77;7;7;7};{1\1\1\1\1\1})+3

q_minuti =RIF.RIGA($1:$60)^0

q_ore =RIF.RIGA($1:$12)^0
 
versione inglese:

secondi =MMULT(((ABS(ROW($1:$360)-(SECOND((NOW()))*6+1))={359,1,0,179,180,181}))*{1,1,96,7,7,7},{1;1;1;1;1;1})+4


minuti =MMULT(((ABS(ROW($1:$360)-(MINUTE((NOW()))*6+1))={359,1,0,179,180,181}))*{75,75,95,6,6,6},{1;1;1;1;1;1})+5

ore =MMULT(((ABS(ROW(Orologio!$1:$360)-INT(MOD(HOUR(NOW()),12)*30+1+MINUTE(NOW())*1/2))={359,1,0,179,180,181}))*{47,47,77,7,7,7},{1;1;1;1;1;1})+3

q_minuti =ROW($1:$60)^0

q_ore =ROW($1:$12)^0
 
Lo stesso principio su cui si basa l'orologio appena illustrato è la base per la costruzione di grafici a cruscotto:
 
 
Il file con l'Orologio Analogico è scaricabile qui sotto ... presto anche in versione 2007.
Per il corretto funzionamento, contenendo macro, va salvato in locale prima di aprirlo.


Ĉ
roberto mensa,
Oct 4, 2010, 6:27 AM
Comments