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 Senior
 
Post: 350
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.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
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 Senior
 
Post: 350
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 Senior
 
Post: 350
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
Avatar utente
Anthony47
Moderatore
 
Post: 19213
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 Senior
 
Post: 350
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 Senior
 
Post: 350
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?
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
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 Senior
 
Post: 350
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!
Avatar utente
Anthony47
Moderatore
 
Post: 19213
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Trasformare un GRAFICO in valori Excel

Postdi wallace&gromit » 16/05/19 12:55

Ho usato il metodo di Anthony per digitalizzare alcuni punti di una serie di immagini.
Il problema è che per passare da un'immagine alla successiva, mantenendo lo stesso oggetto sulla pagina excel, devo fare una procedura un po' lunghetta:
- andare sul menu sviluppo / modalità progettazione
- clic destro sull'immagine
- clic destro sulla definizione di picture
- scelta del file
-uscire da modalità progettazione.

Si può fare con una macro? Magari abbinata al clic destro sull'immagine?
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: Trasformare un GRAFICO in valori Excel

Postdi Anthony47 » 16/05/19 14:31

Il controllo Immagine (perche' parli di questo, vero?) non dipone di eventi utilizzabili allo scopo; pero' puoi usare una macro standard, ad esempio:
Codice: Seleziona tutto
Sub SetImmagine()
Dim myFile
'Scelta file:
    myFile = Application.GetOpenFilename("Immagile,*.jpg")
    If myFile = "Falso" Then
        'MsgBox "Nessun File Selezionato, procedura abortita"
        Exit Sub
    End If
'Set Immagine:
Sheets("Foglio1").Image1.Picture = LoadPicture(myFile)           '<<< Vero Foglio e Vero nome Image
End Sub

Puoi associare la macro a una combinazione di tasti, o creare altra automazione per avviarla facilmente; vedi viewtopic.php?f=26&t=103893&p=647678#p647678

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19213
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Trasformare un GRAFICO in valori Excel

Postdi wallace&gromit » 16/05/19 14:49

perfetto!!!
c'ero vicino, ma appunto cercavo di attribuire il nome all'oggetto, era comunque legato ad una macro che mi fa un po' di pulizia sul foglio.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: Trasformare un GRAFICO in valori Excel

Postdi daniele1357 » 18/12/19 12:20

Molto più facile di Excel è il software dedicato, free, Engauge Digitizer.
Si trova per Linux, Windows e Mac.
https://github.com/markummitchell/engauge-digitizer/releases

Basta avere un jpeg, o altri formati di immagine, con un grafico possibilmente ripulito delle griglie, inserire i valori
ai limiti degli assi e il software estrarrà automaticamente i dati x,y che salverà in un file excel, csv.
E' possibile anche definire quanti punti estrarre.

Niente di più facile.

Gli assi possono essere anche logaritmici o polari, basta configurarlo correttamente.
daniele1357
Newbie
 
Post: 1
Iscritto il: 18/12/19 12:09

Re: Trasformare un GRAFICO in valori Excel

Postdi Albyc8 » 17/01/23 23:02

Buongiorno a tutti, anche se l'argomento è datato, io sarei molto interessato ed avrei una domanda in proposito: con il controllo immagine è possibile muovere con il mouse le linee di un grafico? Ho già costruito una tabella che rappresenta una curva di anticipo di accensione in un motore, ora per variare la sua rappresentazione grafica vario i valori delle celle, per il mio scopo sarebbe utilissimo avere l'effetto contrario ovvero variare i valori modificando la curva (retta segmentata da nodi).
Albyc8
Newbie
 
Post: 6
Iscritto il: 17/01/23 22:45

Re: Trasformare un GRAFICO in valori Excel

Postdi Anthony47 » 18/01/23 11:44

Il controllo "Immagine" veniva coinvolto come contenitore dell'immagine del grafico, potendone poi sfruttare l'evento "Mouse click" per identificare le cooordinate dei nodi, uno dopo l'altro, e quindi ricostruire l'origine dei dati.
Non vedo come questo possa aiutare nella simulazione che descrivi.

Potresti invece valutare l'uso di una o piu' "Barre di scorrimento", da usare per variare uno o piu' dati all'origine del grafico.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19213
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Trasformare un GRAFICO in valori Excel

Postdi Albyc8 » 18/01/23 18:17

Grazie Anthony, effettivamente ho provato quanto esposto e non sono riuscito perché le proprietà di controllo immagine non lo permettono (o forse no ho trovato quelle giuste) ma se fosse possibile averle trasparenti e sovrapponibili al grafico ed entrambi far riferimento allo stesso campo, allora si potrebbe comandare il grafico co il mouse.
Albyc8
Newbie
 
Post: 6
Iscritto il: 17/01/23 22:45

Re: Trasformare un GRAFICO in valori Excel

Postdi Albyc8 » 18/01/23 19:32

Ho provato e funziona solo che l'area di controllo immagine perde la trasparenza al click ed è necessario spostare il mouse esternamente per vedere il grafico aggiornato, naturalmente per ora è necessario, prima di ogni click, selezionare la corrispondente casella di x.
Albyc8
Newbie
 
Post: 6
Iscritto il: 17/01/23 22:45

Re: Trasformare un GRAFICO in valori Excel

Postdi wallace&gromit » 19/01/23 10:17

Forse può essere utile questo strumento sviluppato qualche anno fa con Anthony:
https://www.dropbox.com/scl/fo/74bdjgt2ka4jzc0btsq4oe9/h?dl=0&rlkey=bt6gl6ehuuz011rli7p6k0q5j
Selezionando un singolo punto e premendo il comando Ctrl+b si visualizza una userform in cui sono elencati i valori vicini a quello selezionato.
A me serviva per eliminare valori evidentemente aberranti in serie di dati misurati.
Non so se si ritrova la discussione in cui era stato sviluppato nel 2021.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: Trasformare un GRAFICO in valori Excel

Postdi wallace&gromit » 19/01/23 11:17

Grazie Anthony, che mi hai segnalato l'errore nel link, questo dovrebbe essere quello buono:
https://www.dropbox.com/scl/fi/j15wie4os11svocrjl1wy/valori-aberranti-grafico.xlsm?dl=0&rlkey=h5851hf9n0rkh1tief9arm54i
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Prossimo

Torna a Applicazioni Office Windows


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


Chi c’è in linea

Visitano il forum: Nessuno e 51 ospiti