Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Trasformare un GRAFICO in valori Excel

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Trasformare un GRAFICO in valori Excel

Postdi scanacc » 14/01/16 14:01

Buongiorno,
spesso utilizzo excel per fare dei grafici. MA si può fare anche il procedimento inverso?
Mi spiego meglio invece di dare una tabella dati da dove estrapolare un grafico, è possibile dare un grafico e successivamente estrapolare dei dati?
Grazie per l'attenzione
scanacc
Utente Junior
 
Post: 58
Iscritto il: 06/12/15 10:30

Sponsor
 

Re: Trasformare un GRAFICO in valori Excel

Postdi wallace&gromit » 14/01/16 18:15

ciao,
suppongo che quello che intendi sia: ricavare i valori da un grafico che hai in forma di immagine.
Per fare questo inserisci l'immagine del grafico nel foglio1 di un file excel.
Tracci con lo strumento figura a mani libere le linee rette corrispondenti all'asse x e all'asse y è nomini questi oggetti "assex" e "assey"
(scrivendo questi nomi nel rettangolo in alto a sinistra dove appaiono le coordinate delle celle).
Ora "ricalchi" il tuo grafico tracciando sempre una figura a mano libera che rinominerai "graf".

Lanci questa macro
Codice: Seleziona tutto
Sub DigitGraf()
Dim Nodo As ShapeNode
'
UR = Sheets("Foglio1").Range("B" & Rows.Count).End(xlUp).Row

Range("B2:C" & UR).Clear

For Each Nodo In Sheets("Foglio1").Shapes("graf").Nodes
    [B10].Offset(i, 0) = Nodo.Points(1, 1)
    [B10].Offset(i, 1) = Nodo.Points(1, 2)
    i = i + 1
Next Nodo

For Each Nodo In Sheets("Foglio1").Shapes("assex").Nodes
    [B2].Offset(j, 0) = Nodo.Points(1, 1)
    j = j + 1
Next Nodo

For Each Nodo In Sheets("Foglio1").Shapes("assey").Nodes
    [B5].Offset(k, 1) = Nodo.Points(1, 2)
    k = k + 1
Next Nodo

End Sub


E infine compili le celle in questo modo:
in D2, D3 e D5, D6 inserisci i valori minimo X, massimo X e minimo Y, massimo Y,
in D10 inserisci questa formula:
Codice: Seleziona tutto
=$D$2+(B10-B$2)/(B$3-B$2)*($D$3-$D$2)

e in E10 questa:
Codice: Seleziona tutto
=$D$5+(C10-C$5)/(C$6-C$5)*($D$6-$D$5)

e trascini fino in fondo.
Questi sono i valori del tuo grafico.
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1420
Iscritto il: 16/01/12 14:21

Re: Trasformare un GRAFICO in valori Excel

Postdi scanacc » 16/01/16 00:37

...tra sabato e domenica ci provo! Grazie tantissimo!
scanacc
Utente Junior
 
Post: 58
Iscritto il: 06/12/15 10:30

Re: Trasformare un GRAFICO in valori Excel

Postdi scanacc » 16/01/16 16:42

Allora... quando traccio con lo strumento figura a mani libere le linee rette corrispondenti all'asse x e all'asse y non riesco ad essere preciso poerchè mi si storce tutta e quindi la prima domanda è: Ma sto usando lo strumento giusto? Vorrei provare ad allegare un file immagine ma non so come fare ...comunque sia vado in INSERISCI --> FORME --> LINEE --> FIGURE A MANO LIBERA ...dopo di chè non so dove nominare gli assi creati (in alto a sx non vedo niente).
PS Uso Office 365
scanacc
Utente Junior
 
Post: 58
Iscritto il: 06/12/15 10:30

Re: Trasformare un GRAFICO in valori Excel

Postdi Anthony47 » 17/01/16 02:00

Ovviamente sarebbe stato meglio sapere che tipo di grafico e' rappresentato nell'immagine, comunque, comunque il mio suggerimento e' di procedere come in questo esempio:
-sul foglio inserisci un controllo Immagine
-al controllo associ (proprieta' Picture) la tua immagine
-come PictureSizeMode scegli la proprieta' 2
-poi all'immagine assegni questo codice:
Codice: Seleziona tutto
Private Sub Image1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim myZero
'
myZero = Application.Match("zero", Range("A:A"), 0)
If IsError(myZero) Then Exit Sub
If Cells(myZero, 2) = 0 Then
    Cells(myZero, 2) = Y
ElseIf Cells(myZero, 1).Offset(1, 1) = 0 Then
    Cells(myZero + 1, 2) = Cells(myZero, 2) - Y
Else
    Selection.Value = (Cells(myZero, 2) - Y) / Cells(myZero + 1, 2) * Cells(myZero + 1, 3)
End If
End Sub

Torna sul foglio Excel:
-in una cella di colonna A scrivi "Zero", la cella accanto lasciala vuota
-nella cella sottostante scrivi "Max", la cella accanto la lasci libera, quella accanto ancora (quindi in colonna C) scrivi a quale valore massimo il grafico deve arrivare (io ho scritto 6)

Infine seleziona la cella in cui vuoi creare i valori dei punti del grafico; io mi sono posizionato in B17.
Poi:
-clicca sull'asse dello "zero" del grafico; la cella accanto a Zero verra' compilata
-clicca sull'altezza massima del grafico; io ho cliccato sulla linea del 6
-infine clicca sul primo punto della prima serie; il valore corrispondente viene caricato sulla cella attiva
-spostati sulla cella adiacente e clicca sul secondo valore della prima serie
-continua in orizzontale per gli altri valori della prima serie
-seleziona la cella che deve contenere il primo valore della seconda serie; nel mio caso B18
-ripeti in orizzontale per la seconda serie
-ripeti per le altre serie
Per prova ho creato il grafico sulla base dei punti che ho ottenuto
Il risultato e' stato:
Immagine
host immagini
(per visualizzare l'immagine completa: tasto dx, visualizza immagine)
L'immagine e' quella in alto; il graficio e' quello in basso a dx.
Il giallo ho evidenziato le celle che vengono compilate dalla macro; in verde le celle che vanno compilate come descritto nel testo.

Con altri altri grafici dovrai adattare l'esempio al tuo caso.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Trasformare un GRAFICO in valori Excel

Postdi scanacc » 17/01/16 11:55

Che spettacolo! Spero mi riesca ripeterlo...
scanacc
Utente Junior
 
Post: 58
Iscritto il: 06/12/15 10:30

Re: Trasformare un GRAFICO in valori Excel

Postdi scanacc » 17/01/16 14:55

Veramente Favoloso! Alcune domande.Quale è il significato dei valori in B14 e B15? B15 dovrebbe essere superiore a B14 che rappresenta il punto 0. Giusto? Sarebbe possibile fare tutto in automatico? Apro il file, si aggiorna il grafico che metto a disposizione e mette i valori in corrispondenza a determinati nodi da me costruiti (per esempio inseriti i Valori nell'asse verticale ed il tempo nell'asse orizzontale, mi calcola i valori di inizio mese). GRAZIE DI NUOVO!!
scanacc
Utente Junior
 
Post: 58
Iscritto il: 06/12/15 10:30

Re: Trasformare un GRAFICO in valori Excel

Postdi wallace&gromit » 17/01/16 18:24

vorrei però riprendere quanto avevo già postato io e vedere se Anthony riesce a costruire una versione mista delle nostre due macro, che sarebbe la soluzione ottimale.
I punti forti della mia soluzione sono che, tracciando la linea in prima battuta puoi controllare bene la posizione dei nodi prima di digitalizzare (mi riferisco a grafici un pelo più complessi dei modelli con quattro punti), mentre con la macro di Anthony un clic sbagliato viene subito integrato nella lista e che permette di digitalizzare un grafico a dispersione XY.

La parte debole della mia macro è effettivamente la digitalizzazione degli assi e il fatto che bisogna assegnare il nome alle righe e il fatto che non fa direttamente il calcolo dei valori (ma questo effettivamente non sarebbe difficile da integrare).

Il top sarebbe:
A) importare l'immagine
B) disegnare i grafici
C) lanciare una macro che chiede all'utente di 1) cliccare sull'origine, 2) cliccare sul valore massimo di Y, 3) cliccare sul valore massimo di X, 4) definire quante serie di dati ci sono, 5) selezionare una ad una le linee tracciate.

Anthony, pensi sia fattibile?
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1420
Iscritto il: 16/01/12 14:21

Re: Trasformare un GRAFICO in valori Excel

Postdi scanacc » 17/01/16 22:03

wallace&gromit, Mi dai una mano a provare il tuo sistema per favore ...
scanacc
Utente Junior
 
Post: 58
Iscritto il: 06/12/15 10:30

Re: Trasformare un GRAFICO in valori Excel

Postdi Anthony47 » 18/01/16 12:42

Guardate anche questa vecchia discussione, che aveva come obiettivo creare delle mappe ma che nello svolgimento passava anche dalla lettura delle coordinate dei "nodi" di immagini disegnate: viewtopic.php?f=26&t=87792

Quanto alla situazione in questa discussione, quel che ho presentato e' un prototipo abbastanza semplice; non sapendo che tipi di dati devono essere ricreati non so che suggerire.
Ad esempio io ho racolto solo i dati dell'asse Y immaginando che l'asse X sia a step interi; se fossero grafici tipo scattered andrebbero raccolte ambedue le coordinate X/Y.
Il mio prototipo raccoglie all'inizio in sequenza i dati dello Zero e del valore massimo, poi raccoglie le coordinate dei singoli punti in modo molto libero; ad esempio posso semplicemente ricliccare su un punto senza spostare la cella selezionata per ripetere una lettura di coordinate, se ho l'impressione che la lettura gia' fatta sia imprecisa; posso raccogliere i valori di ogni serie spostando la selezione verso destra, ma potrei raccogliere anche i valori di tutte le serie per una data posizione X, se invece di cambiare cella in orizzontale (e poi cliccare sul prossimo valore di una serie) la cambio in verticale (e poi clicco sul valore della serie successiva).
Una maggiore automazione si potra' pensare solo dopo aver capito il tipo di grafici dell'utente e il tipo di utilizzo da fare; allo stato dei fatti posso l'unica miglioria che posso suggerire e' di far spostare la selezione della cella tramite la macro, predisponendosi quindi a ricevere direttamente il prossimo valore della serie (ma si puo' sempre "tornare indietro" a mano se si vuole ricampionare un punto; e bisogna posizionare manualmente la selezione quando si passa alla prossima serie), aggiungendo questa istruzione in questa posizione:
Codice: Seleziona tutto
Else
    Selection.Value = (Cells(myZero, 2) - Y) / Cells(myZero + 1, 2) * Cells(myZero + 1, 3)
    Selection.Offset(0, 1).Select       'AGGIUNGERE
End If


Mi veniva chiesto il significato di B14 e B15:
La macro parte dalle coordinate dei punti cliccati, quindi bisogna stabilire a quale coordinata corrisponde l'asse dello 0; questo viene scritto nella cella B14, e nel mio caso (quel disegno) corrisponde alla posizione 164,25
Il valore in B15 rappresenta invece quanti punti sullo schermo corrispondono al massimo valore del grafico che voglio rappresentare; nel mio caso io voglio rappresentare max 6, che corrisponde a 154,5 punti.

Per conclude (ri)dico che si possono fare molte cose e in molti modi, ma quale ha senso fare e come farlo dipende dalla situazione da risolvere, che al momento e' solo descritta genericamente.

Ciao!
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Trasformare un GRAFICO in valori Excel":


Chi c’è in linea

Visitano il forum: Nessuno e 17 ospiti

cron