Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

GRAFICO DA TABELLA DATI IN AGGIORNAMENTO AUTOMATICO

Ultimo Aggiornamento: 21/03/2016 10:58
Post: 1
Registrato il: 19/03/2016
Città: CIRIE'
Età: 59
Utente Junior
OFFLINE
19/03/2016 18:58

GRAFICO DA TABELLA DATI IN AGGIORNAMENTO AUTOMATICO
Salve a tutti, sono nuovo del forum e sono molto alle prime armi con il VBA e i grafici di Excel sono sempre stati per me ostici.
Vi spiego il problema nella speranza di trovare qualcuno che mi posa aiutare bene.
Nel file allegato ho una tabella di dati (Foglio DATI) che devo riportare su di un grafico.
I dati da riportare sul grafico iniziano dalla riga 3 e tramite una macro vengono scritti in una nuova riga, ogni 5 minuti (ma si può variare il dato nel VBA) copiandoli dalla riga 2 che si alimenta da altri dati presenti sul Foglio2, che a loro volta provengono da un collegamento DDE.
Fin qui tutto bene.
La tabella del foglio dati, al fine che non diventi enorme, viene alimentata fino alla riga 202, dopo di che quando viene scritta la nuova serie di dati sulla riga 203 la riga 3 viene eliminata in automatico da una macro.

Il mio problema è che impostando i dati del grafico, per esempio B3:B202, ad ogni cancellazione della riga 3 l'intervallo del grafico perde una posizione alla fine della colonna (da 202 a 201,200,199 ecc).

Come posso fare per far si che l'intervallo dei dati sia sempre lo stesso, così da avere un grafico che con il tempo "scorre" e presenta sempre dati aggiornati?




non mi carica il file [SM=x423051]


ora lo ha caricato [SM=x423028]
[Modificato da Marco.Colombi 19/03/2016 20:55]
Post: 354
Registrato il: 06/04/2013
Utente Senior
2010
OFFLINE
21/03/2016 10:58

Ciao
Il problema potrebbe essere risolto con la creazione di nomi di zona e l'assegnazione all'origine dati di tali nomi. Faccio un esempio: se al range A3:A202 assegni per ipotesi il nome "tempo" con la formula:
=scarto(dati!A3;0;0;conta.valori(dati!a:a)), in origine dati del grafico, per l'asse delle x, dovresti inserire: =dati!tempo. E così per i valori delle singole valute delle 9 serie.

Io però con tale procedura ho riscontrato delle difficoltà e, pertanto ho risolto (in modo poco bello) riassegnando i range di origine nella Private Sub Worksheet_Change(ByVal Target As Range), in questo modo:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Rng As Range
    Const myCell As String = "I203"
    Set Rng = Intersect(Target, Me.Range(myCell))
    If Not Rng Is Nothing Then
        Me.Rows(3).Delete
    End If
'-----------------------------------------------------------------    
    Set wk = Worksheets("Dati")
    Worksheets("Grafici Valute").ChartObjects(1).Activate
    ActiveChart.SeriesCollecti0n(1).XValues = wk.Range("A3:A202")
    For c = 1 To 9
        ActiveChart.SeriesCollecti0n(c).Values = wk.Range(Cells(3, c), Cells(202, c))
    Next c
End Sub


Poco elegante ma funzionale.

saluti

Edit: leggi seriescollection con la o e non con lo 0, non capisco perché il sito riporta seriescollecti0n
[Modificato da dodo47 21/03/2016 11:03]
Domenico
Win 10 - Excel 2016
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 21:23. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com