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

Grafico Classifica serieA

Ultimo Aggiornamento: 03/09/2018 13:23
Post: 5.462
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
28/08/2018 06:43

Ciao a tutti, sto creando un nuovo file per il campionato italiano della serie A.

Ho un problema con questo grafico, ricordo che è un grafico pivot, ma se non fosse Pivot, il problema sarebbe lo stesso su uno normale



meglio 2 problemi il primo le etichette si sovrappongono, come si vede, so che esiste il sistema per non farle sovrapporre.

ma vorrei che oltre a non sovrapporsi sia indicata solo alla fine della linea e non ad ogni punto.

oltre alle etichette anche gli indicatori(logo squadra) hanno lo stesso problema.

sarebbe possibile far comparire, l'etichetta e l'indicatore solo alla fine della linea non sovrapposti.

allego il file estrapolato dal file originale.

Ciao By Sal [SM=x423051]

[Modificato da by sal 28/08/2018 06:45]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 1.904
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
28/08/2018 09:19

Ciao
se non ho capito male, nel seguente link trovi un esempio anche da scaricare

saluti

http://www.databison.com/chart-label-trick-label-last-point-in-a-line-chart-and-offset-axis-crossover/



Domenico
Win 10 - Excel 2016
Post: 5.462
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
28/08/2018 10:10

grafico
Ciao Domenico, ho visto sembra utile, ma non riesco a duplicare lo spostamento dell'asse y vicino all'ultimo valore della linea.

ci lavoro ancora un poco a vedere se riesco

Grazie per il momento Ciao By Sal [SM=x423051]

se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 1.905
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
28/08/2018 13:04

Io e i grafici non siamo molto amici [SM=x423059]

Ti ho sottoposto il link solo perchè mi sembrava adatto a quello che cerchi...sorry

saluti



Domenico
Win 10 - Excel 2016
Post: 604
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
28/08/2018 17:33

Buon pomeriggio a tutti
Credo che bisogna ricorrere a VBA
Questa macro prima mette l'etichetta (il nome della squadra) e quindi elimina tutte le etichette di ogni serie tranne l'ultima.
Non ho provato ma per quanto concerne l'indicatore (il logo della squadra) penso si possa agire con lo stesso sistema.
Ovvio che talune etichette sono sovrapposte, ma tu hai detto che sai come fare per metterle ... a posto.

Tieni presente che io ho creato un Grafico sullo stesso Foglio della Classifica (e la macro a questo si riferisce).

Ecco la macro:
Sub Solo_Ultima_Etichetta()
Dim i As Long, j As Long
Sheets("Dati").ChartObjects("Grafico 1").Select
ActiveChart.ChartArea.Select
For i = 1 To 20
  On Error Resume Next
  ActiveChart.SeriesCollecti0n(i).DataLabels.Select
  Selection.ShowSeriesName = True
  For j = 1 To ActiveChart.SeriesCollecti0n(i).Points.Count - 1
    ActiveChart.SeriesCollecti0n(i).Points(j).DataLabel.Select
    Selection.Delete
    On Error GoTo 0
  Next j
  On Error GoTo 0
Next i
End Sub


Fai sapere. Ciao,
Mario
Post: 5.463
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
29/08/2018 08:00

grafico
Ciao Mario, grazie per la risposta, si funziona il tuo metodo anche se ho dovuto riscrivere la macro, in quanto con la versione 2013, cambiano i comandi vba per i grafici.

appena ho terminato inserisco la macro con il risultato.

la tua macro ha un errore, non riuscivo a capirlo.

SeriesCollecti0n.

lo zero al posto di o, come mai?, hai fatto copia incolla dal file?.

Ciao e grazie per il momento By Sal [SM=x423051]

se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 605
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
29/08/2018 09:53

Ciao Sal
non so proprio risponderti. Nella mia macro, ovviamente, non c'è lo 0 (zero) ma una semplice o (vocale).

Ho provato a riallegare la macro sia con Code, sia con Quote, sia senza nulla e, facendo l'anteprima, noto che riporta lo 0 (zero) in ogni caso.
Non capisco perchè.

Per fortuna che è capitato a te che non sei ... un novellino. Forse sarebbe il caso di segnalarlo al WebMaster.

Mi faresti cosa gradita se, alla fine, pubblicassi l'intero codice.
Ciao,
Mario
Post: 5.464
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
29/08/2018 14:49

grafico
Ciao Mario sarà il solito caso delle accentate, che l'editor del Forum trasforma in altre lettere oppure caratteri strani.

si certo sarà mia cura inserire il codice, anche se poi per te non sarà forse eseguibile vista la differenza tra la versione 2010-2013.

Ciao Salvatore [SM=x423051]

se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 606
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
29/08/2018 16:52

Ciao Sal
Ti ringrazio in anticipo e poi vedrò di lavorarci sopra per condividerlo con coloro che hanno ancora la vers.2010

Ciao,
Mario
Post: 5.465
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
30/08/2018 10:18

Grafico
Ciao Mario, ma mi rivolgo a tutti gli interessati, mi sto bloccando, sono riuscito con le macro, sia a mettere l'ultima etichetta, che ad inserire l'ultimo indicatore.

Sono anche riuscito a recepire le posizioni delle etichette in base a "Top-Left", ora però in base al "Top" di ogni serie dovrei distanziarle per l'accavallamento.

sai che la classifica del calcio a volte è specialmente ad inizio campionato ci sono molte squadre a pari punti, quindi accavallate.

quindi dovrei sapere prima quante sono le squadre a pari punti, e spostare solo quelle che sono più di 1 che vuol dire accavallate, ma spostarle in modo tale che non vadano ad accavallare quelle sotto o sopra.

ma forse mi sto facendo io un falso problema.

Questa la macro che rileva la posizione dell'etichetta:

Sub posizione() 'rileva posizione dell'etichetta
Dim r, c, x, y, n, Posiz

ReDim Posiz(1 To 20, 1 To 2)
    ActiveSheet.ChartObjects("Grafico 1").Select
    ActiveChart.ChartArea.Select
    For x = 1 To 20
        ActiveChart.FullSeriesCollecti0n(x).DataLabels.Select
        n = ActiveChart.FullSeriesCollecti0n(x).Points.Count
        ActiveChart.FullSeriesCollecti0n(x).Points(n).DataLabel.Select
        Posiz(x, 1) = Selection.Left
        Posiz(x, 2) = Selection.Top
    Next x


'    ActiveChart.FullSeriesCollecti0n(1).DataLabels.Select
'    ActiveChart.FullSeriesCollecti0n(1).Points(3).DataLabel.Select
'    Selection.Left = 551.797
'    Selection.Top = 47.94
End Sub


una volta che ho tutte le posizioni potrò spostare le etichette dove voglio, con il codice commentato.

Se blocchi la macro ad "End Sub" vedrai che la matrice "Posiz" ti riporta tutte le posizioni di ogni serie.

riusciresti a darmi un input, ma forse come ho detto mi sto facendo io un falso problema

ti allego il file di prova, l'immagine sarebbe del file definitivo.



non ho lanciato la tua macro per farti vedere il funzionamento, se funziona con il 2010, vedi sta tutto nel foglio2, è un grafico Pivot, puoi scegliere la visualizzazione, scegliendo una squadra dallo Slicer(filtro) di fianco, con control puoi selezionare più squadre

Ciao By Sal [SM=x423051]

P.S. NOTA "FullSeriesCollection" con lo 0zero alla "o"


[Modificato da by sal 30/08/2018 10:28]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 607
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
30/08/2018 21:08

Ciao Sal
ti rispondo prima di scaricare il file (poi me lo guardo ben-benino) per darti questo indirizzo:

http://www.freeforumzone.com/discussione.aspx?idd=10224272

Il buon Zer0kelvin ha fatto tutto (ovviamente con un grafico diverso ma il principio dovrebbe essere sempre lo stesso).

A ben risentirci,
Mario
Post: 5.466
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
31/08/2018 08:14

Grafico
Ciao Mario, si conosco quel post, il problema li era che sono solo 2 serie, quindi bastava posizionare l'etichetta una sopra e l'altra sotto per non avere l'accavallamento.

e tempo che vado a trovare "f." alias "fernando cinquegrana" non posta più da anni, non so se lo conosci, senza togliere merito lo reputo il guru dei grafici, e vedere nei suoi archivi se ci sia qualcosa a riguardo, ma sicuramente ci sarà qualcosa.

se trovo qualcosa ti faccio sapere.

Ciao Salvatore [SM=x423051]

se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 608
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
01/09/2018 08:39

Ciao Salvatore
Anch'io ho attinto molto da Fernando.
Ti allego il file in cui ho apportato qualche variazione:
1°) ho eliminato tutte le serie del Grafico e le ho ri-inserite perchè nel tuo Grafico mancavano quelle relative a Spal e Roma.
2°) ho aggiunto dei pulsanti, e relative macro, con cui il primo Elimina le etichette, il secondo le rimette, il terzo lascia solo l'ultima e il quarto ... prende le distanze.

Come puoi vedere le macro fanno tutte il proprio dovere ma nel distanziare le etichette non riesco ad evitare alcuni accavallamenti. Ho provato, ma senza risultato, a mettere le etichette che si sovrappongono leggermente sposta e a destra.

Forse Fernando riuscirà, anzi, ne sono convinto.
Ciao,
Mario
Post: 609
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
01/09/2018 19:55

Ciao a tutti
Non è il massimo ma può essere accettabile.
Ho implementato il codice precedente che, quando trova etichette sovrapposte, le sposta verso destra di 50 pts

Il problema potrebbe essere che sposta da quel punto in poi tutte le etichette.

Vedi che te ne sembra.
Fai sapere. Ciao,
Mario
Post: 610
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
02/09/2018 23:36

Salve a tutti
Mi sono accorto che aggiornando la Classifica coi risultai odierni (pur correggendo il 3 in P in questa parte di codice
For i = 1 To 19
If .SeriesCollecti0n(i).Points(P).DataLabel.Top >= .SeriesCollecti0n(i + 1).Points(P).DataLabel.Top Then
sx = .SeriesCollecti0n(i).Points(P).DataLabel.Left + 50
End If
.SeriesCollecti0n(i + 1).Points(P).DataLabel.Left = sx
Next i )
il posizionamento sballa. Devo dedicarci qualche giorno di riflessione in più (ma sarebbe meglio l'intervento di f).

Scusa per il tempo che t'ho fatto perdere.
Ciao,
Mario
Post: 5.470
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
03/09/2018 07:09

grafico
Ciao, Mario, ma che dici,


Scusa per il tempo che t'ho fatto perdere.



non ci pensare nemmeno, ti devo ringraziare io per l'aiuto che mi stai dando a risolvere un mio problema, in effetti f. la soluzione l'ha già data, in quanto lui visualizza le etichette, creando una tabella dati con le posizioni X-Y di riferimento, e poi le posiziona.

ma devo dare anche un occhiata ad i lavori di Roberto Mensa(alias r, credo) , mi sembra che ci stava un lavoro sulle etichette di anni fa, Intersezione o altro al solito non ricordo l'età avanza, non so se lo conosci.

ecco alcuni lavori, ama i Rebus, infatti il titolo del sito è un rebus,"e90e50" spiegato anni fa che adesso non ricordo al solito.

https://sites.google.com/site/e90e50charts/

comunque guardo il tuo lavoro e se può andare bene mi accontento, non si può cercare l'impossibile.

Grazie comunque per l'impegno

Ciao By Sal [SM=x423051]

[Modificato da by sal 03/09/2018 07:16]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 611
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
03/09/2018 13:23

Ciao Salvatore
stai rispolverando tutte le mie "icone" (come si fa a non conoscere il mitico Roberto Mensa!!!).

Credo di aver risolto il problema in maniera un po' empirica (e non ne ho provato per esteso la validità) riferendomi ai punteggi.
Mi spiego.
Quando si inserisce in un Grafico un'Etichetta e, oltre al valore, si vuol mostrare anche il Nome Serie la DataLabel contiene una Stringa separata da un ; (punto e virgola).
Splittando detta stringa (come sai gli indici partono da 0 zero) il secondo termine è il valore sotto forma di stringa. Inserendo la funzione Val() si ottiene il valore (cioè il punteggio).
Quindi ho assegnato a due variabili (sx1 e sx2) la posizione Left dell'Etichetta e la posizione + 60 pts.
Quindi ho detto a VBA se il punteggio è dispari, pone l'etichetta a sinistra, se è pari, poni l'etichetta a destra.
Mi sembra che non ci siano più accavallamenti (il prosieguo del Campionato mi/ci darà una risposta).

Una precisazione: mi sembra che il Parma non abbia la penalità.

Fai sapere che te ne pare.
Ciao,
Mario
[Modificato da Marius44 03/09/2018 13:23]
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 06:00. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com