Risultati da 1 a 9 di 9

Discussione: Grafico dinamico: rendere dinamiche scrollbar e asse verticale



  1. #1
    L'avatar di Lcbsm
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Italia
    Messaggi
    46
    Versione Office
    Office 2013
    Likes ricevuti
    0
    Likes dati
    21

    Grafico dinamico: rendere dinamiche scrollbar e asse verticale

    Ciao a tutti,

    Prendendo ispirazione da un grafico dinamico che ho trovato su un sito internet dedicato a excel (vi anticipo che all’interno del file allegato ho inserito il link al sito dove ho “rubato” l’idea, mi sembra giusto), ho creato un grafico dinamico per una serie storica che si autoaggiorna sulla base di una data di inizio e di una data di fine scelte attraverso due barre di scorrimento.

    Fin qui, tutto uguale al file a cui mi sono ispirato.

    Ho aggiunto alcune cose:
    Il grafico, inoltre, aggiunge una linea per la media della tariffa per il periodo scelto e due linee tipo “limite superiore” e “limite inferiore” (rispettivamente media+devstandard e media-devstandard)
    Un secondo grafico, più piccolo, è posto immediatamente al di sotto del grafico principale e fa vedere l’intera serie, con l’aggiunta di un’area evidenziata che fa riferimento alla porzione di grafico selezionata attraverso le barre di scorrimento.
    Il limite massimo delle barre di scorrimento è automaticamente aggiornato all’ultimo record inserito nelle colonne A:G attraverso una macro attivata dalla sub Worksheet_Change.

    Ora, per rendere “perfetto” il grafico, ho bisogno del vostro aiuto per superare due problemi che sono presenti in questo foglio e che non so come aggirare:
    1. il primo è relativo alle due barre di scorrimento: in questo momento, l’unico dato che è impostato dinamicamente è il limite massimo dei dati (Shapes.Range(Array("Barra di scorrimento X")).Max) , ma sarebbe utile anche impostare dinamicamente il limite minimo della seconda barra di scorrimento (Shapes.Range(Array("Barra di scorrimento 4")).Min) in modo da non poter mai essere inferiore alla data di partenza del grafico, impostata con la prima barra. Mi spiego meglio: se con la prima barra imposto come data di partenza “20/05/2014”, la seconda barra, quella con la quale scelgo l’ultima data da visualizzare del grafico, deve partire da “21/05/2014”, per evitare di scegliere date inferiori alla data di partenza, che potrebbero “fare impazzire” il grafico.
    2. Parallelamente al punto 1, dovrebbero essere impostati automaticamente anche i limiti minimo e massimo dell’asse verticale del grafico grande, qualcosa del tipo:
      1. Minimo = valore minimo del periodo – 10
      2. Massimo = valore massimo del periodo + 10


    Inoltre, sarebbe fighissimo (ma qui siamo in piena fantascienza) se al posto di due barre ne avessimo una sola o, addirittura, potessimo scegliere l’intervallo di date che ci interessa cliccando e facendo scorrere l’area evidenziata in grigio del grafico piccolo, come si può fare ad esempio nel grafico catturato nell’immagine che segue:

    So benissimo che NON si può fare nel nostro caso, ma magari vi ho dato qualche input per stimolare la vostra fantasia ;)

    Grazie mille!
    File Allegati File Allegati

  2. #2
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3222
    Versione Office
    Excel2010
    Likes ricevuti
    627
    Likes dati
    155
    Ciao
    premetto che non sono molto addentro alle problematiche dei grafici ma mi diletto a provarci.

    Ho dato uno sguardo all'indirizzo da te segnalato ed ho notato che, in quel lavoro, le due barre di scorrimento hanno i valori minimi differenti: nella data di partenza il val.min è 0 mentre nella data di arrivo il val.min. è 1.
    Nella tua elaborazione (per la quale mi complimento) entrambi i val.minimi sono impostati a Zero.
    I val.massimi in quel lavoro sono (ancorchè riferiti a quell'elenco di dati) il primo 30 ed il secondo 3000 mentre nel tuo lavoro il primo ed il secondo sono entrambi impostati a 855 (anche se l'ultima riga con dati validi è la n.857).
    In quel lavoro, se con la seconda scrollbar cerchi di andare "sotto" la prima data non te lo consente.
    Un'altra cosa: nella macro imposti entrambi i valori delle due barre di scorrimento a " .Max = ws.Range("K41").Value - 1 ". Visto che il calcolo in K41 è già impostato a -1 perchè nella macro togli un'altra unità?

    Fin qui quello che ho notato. Aggiungo che ho anche provato a cambiare i dati più sopra richiamati ma senza alcun risultato positivo. Ho provato, altresì, a inserire una condizione nella formula in "data2" dei nomi definiti (non mi è chiaro perchè utilizzi quella differenza per impostare l'altezza del range) ma, anche qui, nessun risultato positivo.

    Non sono andato oltre per "profonda delusione". Mi riprometto di altri tentativi domani.

    Ciao,
    Mario

  3. #3
    L'avatar di Gerardo Zuccalà
    Clicca e Apri
    Data Registrazione
    May 2015
    Località
    Milano, Italy
    Età
    49
    Messaggi
    4916
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1126
    Ciao Lcbsm
    Complimenti per il tuo excel
    tu scrivi:
    ma sarebbe utile anche impostare dinamicamente il limite minimo della seconda barra di scorrimento
    io in questi casi adotto un escamotage, per far si che la data di fine non sia mai prima di quella di inizio sommo il risultato del controllo dello Scrollbar (inizio) più il risultato del controllo dello scrolBar di (fine) cosi la seconda data non andrà mai prima restituendo al grafico

    Senza stravolgere il tuo bel progetto (che tra l'altro per motivi di tempo non ho neanche studiato bene), sostituisci la vecchia formula in J36 con questa:

    =A2+K35+K36

    Attenzione in questo caso hai ottenuto lo scopo solo che lo scrollbar ti sembrerà impazzito perchè sopratutto nel secondo scrollbar avrai un impatto ottico negativo in quanto a volte la barra è spostata più indietro rispetto alla barra di inizio e quindi avrai l'impressione che qualcosa va storto, invece in questo caso il secondo scrollBar va inteso come come punto di partenza della data di inizio (come in google analitcs)
    per ovviare a questo problema dovresti spostare la seconda scroll bar da qualche altra parte e scrivere una nota sopra (es.Giorni aggiunti alla data di inizio)

    forse è quello che volevi
    Fammi sapere!

  4. #4
    L'avatar di Lcbsm
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Italia
    Messaggi
    46
    Versione Office
    Office 2013
    Likes ricevuti
    0
    Likes dati
    21
    Grazie Marius44!

    Citazione Originariamente Scritto da Marius44 Visualizza Messaggio
    Nella tua elaborazione (per la quale mi complimento) entrambi i val.minimi sono impostati a Zero.
    E' vero, non ha senso che anche la seconda barra abbia 0. Impostare a 1.

    Citazione Originariamente Scritto da Marius44 Visualizza Messaggio
    I val.massimi in quel lavoro sono (ancorchè riferiti a quell'elenco di dati) il primo 30 ed il secondo 3000 mentre nel tuo lavoro il primo ed il secondo sono entrambi impostati a 855 (anche se l'ultima riga con dati validi è la n.857).
    Un'altra cosa: nella macro imposti entrambi i valori delle due barre di scorrimento a " .Max = ws.Range("K41").Value - 1 ". Visto che il calcolo in K41 è già impostato a -1 perchè nella macro togli un'altra unità?
    E' vero, ma i massimi che ho impostato io sono frutto della macro e tengono conto del numero effettivo di dati da considerare. Ho sistemato l'errore di cattura dell'ultimo record, ora pesca bene.

    Citazione Originariamente Scritto da Marius44 Visualizza Messaggio
    In quel lavoro, se con la seconda scrollbar cerchi di andare "sotto" la prima data non te lo consente.
    Cavolo, non l'avevo notato!! Ho corretto il file usando la stessa formula che è utilizzata nel lì ed ho fatto qualche altra modifica per bloccare la data massima. (vedi la risposta a Gerardo)

    Citazione Originariamente Scritto da Marius44 Visualizza Messaggio
    Ho provato, altresì, a inserire una condizione nella formula in "data2" dei nomi definiti (non mi è chiaro perchè utilizzi quella differenza per impostare l'altezza del range)
    Ho fatto un sacco di prove e tentativi, e alla fine tutto sembrava funzionare bene con "data2".


    Grazie anche a te Gerardo!

    Citazione Originariamente Scritto da Gerardo Zuccalà Visualizza Messaggio
    io in questi casi adotto un escamotage, per far si che la data di fine non sia mai prima di quella di inizio sommo il risultato del controllo dello Scrollbar (inizio) più il risultato del controllo dello scrolBar di (fine) cosi la seconda data non andrà mai prima restituendo al grafico
    In realtà, in questo modo ho il problema che la barra di scorrimento della data di fine supera l'ultima data effettiva disponibile. Ho bypassato il problema mettendo =SE(J35+K36>MAX(A:A);MAX(A:A);J35+K36) e sembra che vada tutto bene.

    Vi ringrazio molto per i preziosi suggerimenti! ;)
    File Allegati File Allegati

  5. #5
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3222
    Versione Office
    Excel2010
    Likes ricevuti
    627
    Likes dati
    155
    Veramente un ottimo lavoro!:166: Complimenti.
    Grazie per il riscontro positivo.
    Se la tua domanda è stata risolta segna questa discussione come [RISOLTO]
    Vai nella barra dei menu, situata all’inizio di questa discussione, troverai il menu “Strumenti Discussione” quindi scegli “Segna questo Thread come risolto”

  6. #6
    L'avatar di Lcbsm
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Italia
    Messaggi
    46
    Versione Office
    Office 2013
    Likes ricevuti
    0
    Likes dati
    21
    Citazione Originariamente Scritto da Marius44 Visualizza Messaggio
    Veramente un ottimo lavoro!:166: Complimenti.
    Eh!! Troppo buono, ho solo fatto copia-incolla e messo qualche fiocchetto qua e la ;)

    Preferirei aspettare prima di chiudere il topic, in fondo c'è ancora la questione dell'asse verticale irrisolta

  7. #7
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3222
    Versione Office
    Excel2010
    Likes ricevuti
    627
    Likes dati
    155
    Innanzi tutto BUONA PASQUA passata (mi auguro per voi, serenamente).

    Problema asse verticale. Forse si può fare con VBA :166: !!!
    Associa alla barra di scorrimento (meglio se a tutte e due) la seguente macro.
    Codice: 
    Sub assevalori()
    Dim wb As Workbook
    Dim ws As Worksheet
    
    
    Set wb = ThisWorkbook
    Set ws = wb.Sheets("Foglio1")
    
    
        ActiveSheet.ChartObjects("Grafico 3").Activate
        ActiveChart.Axes(xlValue).MinimumScale = ws.Range("K46").Value - 5
        ActiveChart.Axes(xlValue).MaximumScale = ws.Range("K47").Value + 5
    
    
    Set wb = Nothing
    Set ws = Nothing
    End Sub
    Ogni volta che la barra (una delle due) viene toccata, lancia la macro e l'asse verticale assume i valori minimo e massimo pari ai dati calcolati nel foglio.
    Più di questo non ho saputo trovare. Prova e fai sapere se va bene.
    Se dovesse andar bene, come credo, per premio dovresti darci almeno il ... nome (non viene comodo salutarti con l'enigma che hai postato come firma.

    Ciao a tutti (aspetto le critiche di Gerardo),
    Mario

  8. #8
    L'avatar di Gerardo Zuccalà
    Clicca e Apri
    Data Registrazione
    May 2015
    Località
    Milano, Italy
    Età
    49
    Messaggi
    4916
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1126
    Ciao a tutti (aspetto le critiche di Gerardo),
    Ciao Mario! Mi hai chiamato? hahah aaa buona pasqua!!

    Ho provato a risolvere il problema del punto due ma probabilmente avevo capito male la domanda perchè i numeri dell'asse verticale erano completamente diversi tra quelli che c'erano nel grafico (min 70 max 130) e quelli che sono nella domanda del post #1 (min -10 max +10), ma poi leggendo il codice di Mario credo di aver capito e che si possa fare la stessa cosa senza il VBA,
    infatti se si clicca con il mouse destro l'asse verticale>>formato asse>>opzione asse>> segna limite minimo>> e segna limite massimo.... ovviamente questo sistema non è un gran che dinamico e credo che non si adatta automticamente ai nuovi numeri altrimenti bisogna usare le stesse formule che hai usato per le categorie (le date) usarle anche per le serie (i numeri)...

  9. #9
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3222
    Versione Office
    Excel2010
    Likes ricevuti
    627
    Likes dati
    155
    Ciao Gerardo e Buona Pasqua passat anche a te.
    Col sistema da te suggerito si perde la "dinamicità" mentre con la mia macro il range si adatta sempre (ho risposto al punto 2 ma considerando un -5 ed un +5 anzichè 10).

    Rimane in "sospeso" quello che l'Utente ha messo alla fine, cioè:

    1°) una sola scrollbar (che comandi le date) ma può "intervenire" nella variazione di una data non certo "ampliare" il range (oppure bisogna tenere fissa la prima data)

    2°) quello che si vede nell'immagine "sembra" che nella parte evidenziata del grafico vi siano due "maniglie" per visualizzare il range nel grafico più grande. Lui ha detto "fantascienza"! Sarei tentato di dargli ragione.

    Mentre aspettiamo la risposta dell'utente circa la macro, cosa pensi sul punto 2? Ciao,
    Mario

Discussioni Simili

  1. Grafico con doppio asse
    Di elisa nel forum Domande sui Grafici di Excel
    Risposte: 3
    Ultimo Messaggio: 24/10/16, 14:10
  2. Rendere un grafico dinamico in presenza di formattazione condizionale
    Di G.Bove nel forum Domande sui Grafici di Excel
    Risposte: 22
    Ultimo Messaggio: 23/07/16, 07:40
  3. Pulsanti di opzione per rendere grafico dinamico
    Di albert30 nel forum Domande sui Grafici di Excel
    Risposte: 5
    Ultimo Messaggio: 24/04/16, 16:57
  4. Grafico dinamico con scrollbar
    Di fireman80 nel forum Domande sui Grafici di Excel
    Risposte: 12
    Ultimo Messaggio: 15/04/16, 16:33
  5. Grafico dinamico con due menu a tendina e una scrollbar
    Di G.Bove nel forum Domande sui Grafici di Excel
    Risposte: 3
    Ultimo Messaggio: 19/02/16, 18:55

Tag per Questa Discussione

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •