Grafico a dispersione

Anonimo
2013-05-09T08:33:55+00:00

Buongiorno,

devo fare una presentazione con un grafico excel a dispersione che mi sta mettendo in difficoltà. Ipotizziamo una serie di dati tipo la seguente:

settore        valore A    valore B

A                   20%        45%

B                   12%        65%

C                   33%        28%

..............

prendendo come esempio il settore A, la mia necessità è quella di inserirlo nel grafico, visualizzandolo univocamente nelle coordinate: X 20% (valore A)  e  Y  45% (valore B).

Il problema che incontro è quello che impostando le serie in questo modo:

Serie 1:  ascisse "Settore"    ordinate "valore A"

Serie 2:  ascisse  "Settore"   ordinate "valore B"

i settori mi vengono graficati 2 volte. Ad esempio, il settore "A" lo trovo una volta in corrispondenza  dei valori 20% (Y) e 65% (X) ed una seconda nelle coordinate 45% (Y) e 65% (X)  (Immagino che il 65% delle X sia la somma dei Valori A e B)

Ho smanettato nelle varie opzioni, ma non sono riuscito a risolvere la questione; utilizzando poco questa caratteristica di excel, mi trovo in difficoltà con quelli  più complessi . Chiedo aiuto a qualche esperto di grafici. Grazie.

N.B. utilizzo Excel 2010

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2013-05-10T18:04:12+00:00

Ciao,

ho provato la soluzione da te proposta e sembrerebbe funzionare. Soltanto che nel grafico anzichè le etichette della colonna A, così come è strutturata la macro mi inserisce i valori della colonna B (valori x).

Dove andrebbe modificata affinchè mi inserisca i dati della colonna giusta ?

Ciao Andrea,

il problema non è dovuto a come è strutturata la macro bensì a come hai strutturato il foglio, infatti, come scritto sopra:

- la tabella deve avere le seguenti colonne: A (etichette), B (valori x), C (valori y)

La macro preleva le etichette dalla colonna immediatamente a sinistra della colonna valoreA.

Per modificare il riferimento a questa colonna devi intervenire sulla riga seguente al carattere evidenziato: (-1 = spostamento a sinistra di una colonna)

ActiveChart.SeriesCollection(1).Points(Counter).DataLabel.Text = Range(xVals).Cells(Counter, 1).Offset(0, -1).Value

e poi, è possibile, eventualmente, modificare i colori del carattere delle etichette una volta inserite nel grafico ?

Ecco il codice che ti permette di modificare il tipo di carattere, la dimensione ed il suo colore.

With ActiveChart.SeriesCollection(1).DataLabels.Font

.Name = "Arial"

.Size = 10

.ColorIndex = 3

End With

Un saluto,

Andrea.

La risposta è stata utile?

0 commenti Nessun commento

4 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-05-10T14:22:10+00:00

    Ciao,

    ho provato la soluzione da te proposta e sembrerebbe funzionare. Soltanto che nel grafico anzichè le etichette della colonna A, così come è strutturata la macro mi inserisce i valori della colonna B (valori x).

    Dove andrebbe modificata affinchè mi inserisca i dati della colonna giusta ?

    e poi, è possibile, eventualmente, modificare i colori del carattere delle etichette una volta inserite nel grafico ?

    Ti ringrazio

    Andrea.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-05-09T15:02:44+00:00

    Soltanto non riesco ad etichettare i punti inseriti nel grafico con le lettere del settore (a, b, c ... etc.), in quanto, probabilmente, non sono state selezionate nelle 2 serie X e Y.

    C'è un modo per poter finalizzare anche quest'aspetto ?

    Ciao andyfas,

    dal 'formato etichette dati' puoi inserire come etichetta solamente il valore X e/o Y, purtroppo, per quanto ne so io, non c'è un metodo diretto per inserire una etichetta per ogni punto della serie. Se ci sono pochi punti e non cambiano nel tempo si può fare manualmente, altrimenti ci può venire in aiuto il seguente codice VBA.

    Sub AttachLabelsToPoints()

    'Dimension variables.

    Dim Counter As Integer, ChartName As String, xVals As String

    If ActiveChart Is Nothing Then MsgBox "Devi prima selezionare il grafico!": Exit Sub

    ' Disable screen updating while the subroutine is run

    Application.ScreenUpdating = False

    ' Store the formula for the first series in "xVals"

    xVals = ActiveChart.SeriesCollection(1).Formula

    ' Extract the range for the data from xVals

    xVals = Mid(xVals, InStr(InStr(xVals, ","), xVals, Mid(Left(xVals, InStr(xVals, "!") - 1), 9)))

    xVals = Left(xVals, InStr(InStr(xVals, "!"), xVals, ",") - 1)

    Do While Left(xVals, 1) = ","

    xVals = Mid(xVals, 2)

    Loop

    ' Attach a label to each data point in the chart

    For Counter = 1 To Range(xVals).Cells.Count

    ActiveChart.SeriesCollection(1).Points(Counter).HasDataLabel = True

    ActiveChart.SeriesCollection(1).Points(Counter).DataLabel.Text = Range(xVals).Cells(Counter, 1).Offset(0, -1).Value

    Next

    End Sub

    Prerequisiti per utilizzare il codice:

    • la tabella deve avere le seguenti colonne: A (etichette), B (valori x), C (valori y)
    • seleziona il grafico che intendi 'etichettare' prima di lanciare la macro

    Ciao,

    Andrea.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2013-05-09T14:24:57+00:00

    Ciao AndyCap64,

    si così mi sembra che imposti il grafico come da mie esigenze, ed è già un passo avanti.

    Soltanto non riesco ad etichettare i punti inseriti nel grafico con le lettere del settore (a, b, c ... etc.), in quanto, probabilmente, non sono state selezionate nelle 2 serie X e Y.

    C'è un modo per poter finalizzare anche quest'aspetto ?

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2013-05-09T13:53:07+00:00

    Ciao andyfas,

    non so se ho capito esattamente ... ma se la serieA rappresenta i valori delle ascisse (X) del tuo grafico, mentre la serieB le ordinate (Y) è sufficiente creare una sola serie.

    Una volta creato il grafico cancella una delle due serie ed imposta quella rimasta nel seguente modo:

    nome serie: quello che vuoi

    valori X serie: serieA

    valori Y serie: serieB

    Ciao,

    Andrea.

    La risposta è stata utile?

    0 commenti Nessun commento