Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Macro per aggiornamento grafico

213 views
Skip to first unread message

Alejandro

unread,
Dec 27, 2006, 1:30:01 PM12/27/06
to
Salve a tutti, ho questa esigenza.
Partendo da un grafico che rappresenta i dati nella tabella indicata,
vorrei sviluppare una macro che in qualunque momento lo aggiorni prendendo i
5 dati più recenti.
giorni Valore
1 12
2 13
3 14
4 15
5 16

Vale a dire che al giorno X il grafico rappresenti i giorni X,
X-1,X-2,X-3,X-4.
Vi ringrazio e buon 2007!.

Ignazio

unread,
Dec 28, 2006, 3:46:01 AM12/28/06
to
"Alejandro" <Alej...@discussions.microsoft.com> ha scritto nel messaggio
news:32F35BC5-A5A0-47F1...@microsoft.com...

> Partendo da un grafico che rappresenta i dati nella tabella indicata,
> vorrei sviluppare una macro che in qualunque momento lo aggiorni prendendo
i
> 5 dati più recenti.
> giorni Valore
> 1 12
> 2 13
> 3 14
> 4 15
> 5 16
>
> Vale a dire che al giorno X il grafico rappresenti i giorni X,
> X-1,X-2,X-3,X-4.

Ciao Alejandro,
- i giorni sono dei numeri (come li hai scritti), oppure sono delle date
(numeri seriali formattate come "giorno")?
- i giorni sono ordinati in maniera crescente?
- ci potrebbero essere giorni ripetuti?

Secondo me si potrebbe risolvere senza macro.
L'uso della macro è una tua particolare esigenza?

--
Ciao
Ignazio


Alejandro

unread,
Dec 28, 2006, 8:36:01 AM12/28/06
to
Ciao Ignazio, chiarisco quanto mi chiedi:
la colonna giorni contiene dei numeri progressivi, crescenti e non ripetuti.
(se fossero date cambierebbero i termini del problema?).
La macro è una mia esigenza particolare, nel senso che, da neofita di vb,
non saprei, al momento, scrivere il codice da solo.
Se ritieni di poter risolvere la mia richiesta anche senza macro, va bene.
Apprezzerò anche questa alternativa.
Se posso, ho ancora una domanda che non c’entra con quanto sopra. Perché se
in un modulo di vb scrivo:
Sub EseguiBeep()
Beep
End Sub
Non ottengo alcun beep?
Grazie e buon 2007!

Ignazio

unread,
Dec 28, 2006, 11:01:10 AM12/28/06
to
"Alejandro" <Alej...@discussions.microsoft.com> ha scritto nel messaggio
news:3C2AF80F-36A5-47E6...@microsoft.com...

> la colonna giorni contiene dei numeri progressivi, crescenti e non
ripetuti.
> (se fossero date cambierebbero i termini del problema?).

Cambierebbero le formule da usare.

> La macro è una mia esigenza particolare, nel senso che, da neofita di vb,
> non saprei, al momento, scrivere il codice da solo.
> Se ritieni di poter risolvere la mia richiesta anche senza macro, va bene.
> Apprezzerò anche questa alternativa.

Ci provo senza macro.
L'idea è di riferire il grafico ad un'intervallo dinamico.
Supponiamo che il file si chiama TestOrigineGrafico.xls
Supponiamo che (nel Foglio1) l'elenco dei giorni sia nell'intervallo A1:A32
(in A1 c'è l'intestazione "giorni") e l'elenco dei valori sia
nell'intervallo B1:B32 (in B1 l'intestazione "Valore").

Da "Inserisci > Nomi > Definisci" aggiungi i seguenti nomi di intervalli
dinamici:
ElencoGiorni
riferito a: =SCARTO(Foglio1!$A$1;Foglio1!$C$2;0;MAX(-5;-Foglio1!$C$2);1)
ElencoValori
riferito a: =SCARTO(Foglio1!$A$1;Foglio1!$C$2;1;MAX(-5;-Foglio1!$C$2);1)

Quindi riferisci il grafico agli intervalli dinamici.
Se ad esempio usi un grafico a dispersione:
Valori X: =TestOrigineGrafico.xls!ElencoGiorni
Valori Y: =TestOrigineGrafico.xls!ElencoValori

Da ora in poi, dovrai scegliere in C2 il giorno per visualizzare i dati di
interesse.
Ad esempio, scrivendo 10 nella cella C2, vedrai visualizzato il grafico
relativo all'intervallo A7:B11 (ho supposto, come dicevi nel primo post, che
in A2 c'è scritto 1, in A3 c'è scritto 2, ecc).

Se il giorno dovesse essere quello odierno, potresti inserire in C2 la
formula:
=GIORNO(OGGI())
oppure postresti ridefinire i nomi, sostituendo:
Foglio1!$C$2
con:
GIORNO(OGGI())

> Se posso, ho ancora una domanda che non c'entra con quanto sopra. Perché
se
> in un modulo di vb scrivo:
> Sub EseguiBeep()
> Beep
> End Sub
> Non ottengo alcun beep?

Meglio aprire un'altro 3D.

--
Ciao
Ignazio


Alejandro

unread,
Dec 29, 2006, 5:31:00 AM12/29/06
to
Ignazio, non mi è chiaro in quali celle devo inserire le formule scarto.
Cioè, a cosa devono essere riferite le zone denominate elencogiorni e
elencovalori?
E, a prescindere, mi puoi indicare il codice? Grazie.

Ignazio

unread,
Dec 29, 2006, 6:06:03 AM12/29/06
to
"Alejandro" <Alej...@discussions.microsoft.com> ha scritto nel messaggio
news:D527E403-26C3-4104...@microsoft.com...
> Ignazio, non mi č chiaro in quali celle devo inserire le formule scarto.
> Cioč, a cosa devono essere riferite le zone denominate elencogiorni e

> elencovalori?
> E, a prescindere, mi puoi indicare il codice? Grazie.

Ciao Alejandro,
nessun codice, la soluzione č senza macro.
Se proprio vuoi, si puň scrivere del codice (piů tardi ci posso provare, o
magari altri posteranno soluzioni).

Le formule scarto servono per definire dei nomi dinamici, e non vanno
inserite in nessuna cella.
Procedi cosě:

Inserisci > Nomi > Definisci
- Nomi nella cartella di lavoro: (digita: ElencoGiorni)
- riferito a: =SCARTO(Foglio1!$A$1;Foglio1!$C$2;0;MAX(-5;-Foglio1!$C$2);1)
Aggiungi
- Nomi nella cartella di lavoro: (digita: ElencoValori)
- riferito a: =SCARTO(Foglio1!$A$1;Foglio1!$C$2;1;MAX(-5;-Foglio1!$C$2);1)
Aggiungi
Chiudi

A questo punto hai definito i nomi di 2 intervalli dinamici:
ElencoGiorni
ElencoValori

Per vedere quali sono, digita un numero in C2 (ad esempio 10), quindi vai
in:
Inserisci > Nomi > Definisci
Seleziona un nome definito (ad esempio ElencoGiorni)
Fai clic sulla formula contenuta in "riferito a:"
dovresti vedere evidenziato l'intervallo dinamico (in questo caso
l'intervallo A7:A11)

Fa sapere.

--
Ciao
Ignazio


Alejandro

unread,
Dec 29, 2006, 7:50:00 AM12/29/06
to
Ignazio, funziona benissimo e ho imparato qualcosa. Grazie.

Alejandro

unread,
Jan 1, 2007, 11:42:01 AM1/1/07
to
Ciao a tutti, la risposta alla mia richiesta è stata brillantemente evasa da
Ignazio con l'ausilio della funzione Scarto. A me interessa anche la
soluzione attraverso una macro. Me la potete suggerire? Grazie.

"Alejandro" ha scritto:

Alejandro

unread,
Feb 15, 2007, 10:26:38 AM2/15/07
to
Ignazio, riprendo il problema di cui tu mi hai già indicato la soluzione, in
quanto avrei ora bisogno di ottimizzarlo. Si tratta di questo: se mi trovo al
giorno 5 il grafico mi espone i primi 5 giorni e va sin qui ok. Se mi trovo
al giorno 10 esso espone i giorni da 6 fino a 10 ignorando giustamente gli
altri dati. Il problema è che man mano che aumento il giorno del mese,
aumenta la zona vuota alla sinistra del grafico che diventa sempre meno
leggibile. Non si può adattare automaticamente i limiti della scala delle X
in base al giorno inserito facendo in modo che essa non parte sempre da 0?
Ad esempio, se inserisco il giorno 15 questi limiti potrebbero essere fra 10
(15-5) e 20 (15+5), se inserisco 20 tali limiti potrebbero essere fra 15
(20-5) e 25 (20-5).
Ti ringrazio in anticipo.


Ignazio

unread,
Feb 15, 2007, 5:44:40 PM2/15/07
to
"Alejandro" <Alej...@discussions.microsoft.com> ha scritto nel messaggio
news:34352DDE-1B5B-4244...@microsoft.com...

Ciao Alejandro,
credo che sia possibile solo con VBA, ma non sono sicuro se vale la pena
seguire questa via.
Se ne è discusso tempo fa:
"Valore Max del Grafico" :: Ohsen :: 12/04/2005
http://groups.google.it/group/microsoft.public.it.office.excel/browse_frm/thread/1bf2cd7cbb65f839

--
Ciao
Ignazio


0 new messages