|
Rank: Member
Iscritto dal : 12/20/2001 Posts: 0
|
Salve a tutti. Avrei bisogno di un aiuto che mi cambierebbe la vita... E' possibile fare in modo che la scala dell'asse delle ordinate di un grafico vari automaticamente in funzione dei dati ai quali si riferisce ? Ad esempio : un grafico si riferisce ai valori inseriti nell'intervallo a1:a10; io vorrei che il min e il max della scala siano sempre pari rispettivamente al min e al max dei valori presenti nell'intervallo ( anche se questi cambiano ). In pratica la scala dell'asse di adatta automaticamente ai valori della serie. Grazie a chiunque voglia aiutarmi.
|
|
|
|
|
Rank: AiutAmico
Iscritto dal : 9/20/2004 Posts: 1,597
|
Fai doppio click sull'asse dei valori. Nella finestra che ti si apre scegli scala e controlla che tutte le caselline siano selezionate. Sono cosi avanti che quando guardo indietro vedo il futuro.
|
|
Rank: Member
Iscritto dal : 12/20/2001 Posts: 0
|
Innanzitutto grazie per aver risposto. Tuttavia, la selezione delle caselline nella finestra della scala non è quello she fa al caso mio, perchè io voglio che la scala varii al variare dei dati, secondo una relazione da me determinata. E' certamente più complicato e attualmente non so neppure se è una cosa possibile Ciao
|
|
Rank: AiutAmico
Iscritto dal : 9/20/2004 Posts: 1,597
|
In questo caso devi gestire le proprietà degli assi attraverso una funzione costruita ad hoc in VBA. Le proprieta degli assi che ti interessano sono queste: ActiveChart.Axes(xlValue).MinimumScaleIsAuto = False ActiveChart.Axes(xlValue).MaximumScaleIsAuto = False ActiveChart.Axes(xlValue).MinimumScale = 5 ActiveChart.Axes(xlValue).MaximumScale = 15 Ovviamente i valori 5 e 15 vanno sostituiti con dei valori o delle funzioni opportune ed il blocco di istruzioni dovrà essere richiamato tramite un evento che si scatena alla variazione dei dati. Sono cosi avanti che quando guardo indietro vedo il futuro.
|
|
Rank: Member
Iscritto dal : 12/20/2001 Posts: 0
|
Ti ringrazio veramente per il tuo aiuto, Dead. Supponevo che la soluzione fosse nell'utilizzo di VBA, dovrei dire temevo, perchè ammetto di non saperne fare uso. Mi sono accorto ora che per il livello di cose che devo fare in Excel, formule e registrazione di macro non sono più sufficenti. Quindi sto iniziando ora a cercare online qualche guida ( suggerimenti sono ben accetti in riguardo ). Tuttavia posso chiederti di mostrarmi la scrittura completa ? e come devo fare per richiamare le istruzioni come tu dici ? Non è una questione di pigrizia, ma, per questo grafico, di strettezza di tempi.
Grazie, e scusami se abuso della tua disponibilità
|
|
Rank: AiutAmico
Iscritto dal : 9/20/2004 Posts: 1,597
|
il listato completo non te l'ho messo perche in questo momento non esiste. Nel senso che quella che ho scritto è solo una bozza che può indirizzarti verso l'utilizzo delle proprietà adeguate. In pratica devi scriverti un programma in VBA che faccia quello che tu richiedi. Io non posso farlo per due motivi: uno è il tempo che ci vuole, è l'altro più determinante è che dovrei sapere <b>esattamente</b> come deve comportarsi il tuo grafico, quali e dove sono i dati, qual'è la relazione che gestisce la variazione della scala degli assi, ecc. ecc. La maniera più semplice per imparare un po' di VBA è quella di creare delle macro il più simile possibile a ciò che ti serve e poi aprirle con l'editor di visual basic e cercare di capire i vari passi del listato. Insieme a excel è fornito un ricco help su tutte le funzioni di VBA che ti può aiutare molto (spesso non è installato di default, ma devi installarlo dal CD di Office). Imparare il VBA non è facilissimo ma nemmeno impossibile: in un paio di settimane potrai cominciare a muoverti più agevolmente. Se vuoi un libro dal quale partire ti consiglio Visual Basic 6.0 di Francesco Balena. Sono cosi avanti che quando guardo indietro vedo il futuro.
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
a questo indirizzo trovi una macro bella pronta per soddisfare la tua richiesta. La pagina è in inglese ma ti basta copiare il codice così come si trova in un modulo Vba della tua cartella, attivare il grafico e lanciare la macro. http://support.microsoft.com/default.aspx?scid=kb;en-us;213644andrea
|
|
Rank: Member
Iscritto dal : 12/20/2001 Posts: 0
|
Vi ringrazio per il vostro aiuto ( non l'ho fatto prima perchè impegnato, anche a fare prove su prove con excel ). Il link sopra postato è ottimo, e fatte alcune prove sarebbe proprio ciò che mi serve. Però non funziona se nella serie dei valori cui il grafico si riferisce c'è qualche #N/D, e purtroppo nelle mie serie ce ne sono eccome ( non posso eliminarli perchè mi serve che il grafico non sia una spezzata continua ). Per cui avevo pensato di riferire gli estremi dell'asse ad una cella ( in cui mi calcolereri i valori di cui ho bisogno ). Ma per quanto provi con macro-prova non mi riesce di capire come si fa. In pratica nell'esempio di listato postato da dead come posso mettere una formula o il riferimento ad una cella ( penso sia più facile ), al posto di quei valori fissi ? Per esempio vorrei mettere qualcosa come
ActiveChart.Axes(xlValue).MinimumScale=A5 (cioè il valore contenuto nel foglio di lavoro in A5 ) al posto di
ActiveChart.Axes(xlValue).MinimumScale = 5
Siete già stati molto gentili, ma se qualcuno di voi potesse dirmelo, gli sarei molto grato. Grazie
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
con questa macro assegni il valore x come valore minimo e il valore y al valore massimo in questo caso i range di riferimento dei valori X-Y sono stati assegnati alle celle D1 ed E1 che vorrai personalizzare secondo le tue necessità. Andrea Sub scala() Dim x, y x = Range("d1").Value y = Range("e1").Value With ActiveChart .Axes(xlValue).MinimumScaleIsAuto = True .Axes(xlValue).MaximumScaleIsAuto = True .Axes(xlValue).MinimumScale = Application.Min(x) .Axes(xlValue).MaximumScale = Application.Max(y) End With end sub
|
|
Guest |