Avatar billede brilleabe Nybegynder
14. august 2007 - 20:05 Der er 9 kommentarer og
1 løsning

Graf: slet label hvis værdi er = 0

jeg har en graf (stacked bar i sit 'eget' sheet - dvs ikke indlejret i et andet ark) med 30-40 forskellige serier.

Jeg har brug for at vise labels i grafen, men kun for de værdier hvor der er data. Det er muligt at gøre dette manuelt, men det er meget omstændigt og grafen opdateres ofte.

Jeg har brug for et lille stykke vba som kan løbe gennem alle serierne i en graf (antallet svinger) og checke hvert eneste datapunkt. Hvis værdien for datapunktet er = 0 skal lablen slettes, ellers ikke.

Håber der er nogen som kan hjælpe.


mvh
brille
Avatar billede mikker Nybegynder
15. august 2007 - 14:17 #1
Jeg går ud fra at du henter labels fra dit ark?
I så fald er det vel lettest at styre med en formel i Excel.
Noget á la Hvis(A2=0;"";A1) Eller lignende.
Avatar billede mikker Nybegynder
15. august 2007 - 14:21 #2
Ellers skal du nok have fat i

    ActiveChart.SeriesCollection(1).XValues = "=Ark1!R2C2:R2C10"

Vil jeg tro.
Avatar billede brilleabe Nybegynder
15. august 2007 - 15:26 #3
hejsa,
Jeg havde forestillet mig noget ala dette:

Sub FjerLabelHvisVærdi()
Dim x As Byte ' Antal Serier i graf
Dim y As Byte ' Antal datapunkter i serie (point)
Dim i As Byte ' tæller
Dim z As Byte ' tæller

x = ActiveChart.SeriesCollection.Count

    For i = 1 To x
        y = ActiveChart.SeriesCollection(i).Points.Count
            For z = 1 To y
                If ActiveChart.SeriesCollection(i).Points(z).Value = 0 Then
                    ActiveChart.SeriesCollection(i).Points(z).Label.Visible = False
                End If
            Next z
    Next i
End Sub

Det køre helt fint indtil:

                If ActiveChart.SeriesCollection(i).Points(z).Value = 0 Then
                    ActiveChart.SeriesCollection(i).Points(z).Label.Visible = False

Det er disse to linier som jeg ikke kan hitte ud af (syntax mv). Jeg aner faktisk ikke om man overhoved kan skrive noget med:

point(3).value

eller

point(3).label.visible=true

Det er mest for at vise hvad det er jeg mener.

Håber der er nogen som har de vise sten ;-)

/brille
Avatar billede mikker Nybegynder
16. august 2007 - 16:08 #4
Har du forsøgt med en omskrivning af

Charts("Chart1").SeriesCollection(1).HasDataLabels = True / False

Eller

Charts("Chart1").SeriesCollection(1).Points(1).ApplyDataLabels

Jeg er på rimelig bar bund her... :o)
Avatar billede brilleabe Nybegynder
25. august 2007 - 15:01 #5
hej igen,

problemet er ikke længere at fjerne/sætte label på det enkelte datapoint, men at finde værdien af datapoint xx i seriescollection yy for at bestemme om labelen skal væk eller ej.

Jeg har kigget en del i hjælp mv, men jeg kan sgu ikke finde svaret..
Avatar billede mikker Nybegynder
25. august 2007 - 16:21 #6
Jeg synes også at have kigget og testet, men heler ikke fundet noget der ligner det. Det er sikkert simpelt hvis man ved hvordan.
Avatar billede brilleabe Nybegynder
25. august 2007 - 19:47 #7
ja, jeg kan jo bare håbe på at der er en af hejerne her som har en ide. Tak for dine bud
Avatar billede brilleabe Nybegynder
28. august 2007 - 07:02 #8
Så tror jeg det lykkes, løsningen ser således ud (det kan sikkert gøres smukkere..)
For Each Se In ActiveChart.SeriesCollection
    With Se
        SerieNavn = .Name
        Vær = .Formula
        x = Split(Vær, ",")
        Vær = x(2)
        For Counter = 1 To Range(Vær).Cells.Count
            PointVærdi = Range(Vær).Cells(1, Counter).Offset(0, 0).Value
            LabelVærdi = Range(Vær).Cells(1, 1).Offset(0, -1).Value
            If PointVærdi <> 0 Then
                ActiveChart.SeriesCollection(SerieNavn).Points(Counter).HasDataLabel = True
                ActiveChart.SeriesCollection(SerieNavn).Points(Counter).DataLabel.Text = LabelVærdi
            End If
        Next Counter
    End With
Next
Avatar billede brilleabe Nybegynder
28. august 2007 - 07:03 #9
..og det skulle have været et svar.

mikker, tak for budet

/brille
Avatar billede mikker Nybegynder
30. august 2007 - 18:45 #10
Cool, det skal nok kunne bruges en dag.
Hvis bare man bliver ved længe nok :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester