Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Diagramme aus Tabelle

Diagramme aus Tabelle
19.06.2023 10:46:11
MMRH

Hi,

ich habe eine Tabelle, die in Row 1 ab Spalte F, 26 Überschriften enthält.
in row 17 sind Werte, die ab Spalte F bis AE (26) enthalten sind.

Markiere ich F1-AE1 und danach mit STRG F17-AE17 und gehe auf Einfügen, Diagramme etc. bekomme ich beim ersten Anlauf ein perfektes Balkendiagramm, das auf der X-Achse alle 26 Überschriften aus F1-AE1 enthält und die Werte F17-AE17 als je einen Balken.

Versuche ich das zu automatisieren, klappt es nicht, denn die X Achse enthält nur eine 1 statt den Überschriften aus F1-AE1. Hier mein Code. Ich bedanke mich für alle Beiträge, die weiterhelfen.

ich gehe in das Blatt "Datenbasis" und suche eine Position aus Spalte E aus. Von dort aus wird der Code ausgelöst.Ich erkläre zuerst 2 ranges. Wertebereich und Überschriftenleiste und vereine diese zu diagrammbereich.



Sub Diagrammerstellen()

Sheets("Datenbasis").Activate

Dim i As Integer
Dim eingebettetesdiagramm As Shape
Dim rng As Range
Dim diagrammbereich As Range, wertebereich As Range

Dim bezeichnung As Range


Set bezeichnung = Selection

If Selection.Rows.Count > 1 Or Selection.Columns.Count > 1 Then
    MsgBox ("Bitte wählen Sie nur eine Position in Spalte E aus"), vbOKOnly + vbCritical, "Warnung"
    Exit Sub
End If


'    ActiveChart.SetSourceData Source:=Range( _
'        "Datenbasis!$F$17:$AE$17,Datenbasis!$F$1:$AE$1")

Dim zeile As Integer
zeile = ActiveCell.Row '.Count


'Set wertebereich = Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 26))
Set wertebereich = Range("Datenbasis!F" & zeile & ":AE" & zeile)

    wertebereich.Select
    
Dim überschriftenleiste As Range
Set überschriftenleiste = Range("Datenbasis!$F$1:$AE$1")

    überschriftenleiste.Select

Set diagrammbereich = Union(überschriftenleiste, wertebereich)

    diagrammbereich.Select
    
    

Dim jahrrng As Range
Dim werterng As Range

'Bereinigen
    Dim zelle As Range
    For Each zelle In diagrammbereich
        If zelle.Value = "leer" Or zelle.Value = "fehlende Angabe" Or zelle.Value = "0,001" Then
            zelle.Value = ""
        End If
    Next



Sheets("Visualisierung").Activate

Set rng = Range("a2:e32")

'Cells(1, 1).Value = bezeichnung

Set eingebettetesdiagramm = Sheets("Visualisierung").Shapes.AddChart2(201, xlColumnClustered, Left:=rng.Left, Width:=rng.Width, Top:=rng.Top, Height:=rng.Height)

    eingebettetesdiagramm.Chart.SetSourceData Source:=diagrammbereich
    
    eingebettetesdiagramm.Chart.ClearToMatchStyle

    
    
    
    eingebettetesdiagramm.Chart.HasTitle = True
        eingebettetesdiagramm.Chart.ChartTitle.Text = bezeichnung

    'eingebettetesdiagramm.Chart.ChartTitle.format.TextFrame2.TextRange.Font.Size = 11
    'eingebettetesdiagramm.Chart.SetElement (msoElementDataLabelOutSideEnd)
    'eingebettetesdiagramm.Chart.SetElement (msoElementDataLabelNone)
    'eingebettetesdiagramm.Chart.SetElement (msoElementDataTableWithLegendKeys)
    'eingebettetesdiagramm.Chart.SetElement (msoElementLegendNone)
    eingebettetesdiagramm.Chart.Axes(xlCategory).TickLabelPosition = xlLow
    eingebettetesdiagramm.Chart.SetElement (msoElementDataLabelOutSideEnd)

                    
Dim seriescol As Integer, startseriescol As Integer
seriescol = eingebettetesdiagramm.Chart.SeriesCollection.Count
For startseriescol = 1 To seriescol
    eingebettetesdiagramm.Chart.FullSeriesCollection(startseriescol).DataLabels.Position = xlLabelPositionCenter
eingebettetesdiagramm.Chart.FullSeriesCollection(startseriescol).DataLabels.Orientation = xlUpward
eingebettetesdiagramm.Chart.FullSeriesCollection(startseriescol).DataLabels.Font.Size = 12
Next


                    
'Alles nach unten schieben

    Rows("1:33").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Cells(34, 1).Select
    ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell


Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Diagramme aus Tabelle
19.06.2023 11:01:56
onur
Und was erwartest du jetzt? Dass Jemand deine Datei mit deinen Daten nachbaut, damit er deinen Code testen kann?


AW: Diagramme aus Tabelle
19.06.2023 11:28:48
Beverly
Hi,

also bei mir funktionert es nach diesem Prinzip problemlos:

Sub DiaErstellen()
    Dim rngBereich As Range
    Set rngBereich = Union(Range("F1:J1"), Range("F17:J17"))
    With ActiveSheet.Shapes.AddChart2(201, xlColumnClustered, 0, 0, 0, 0).Chart
        .ChartType = xlColumnClustered
        .SetSourceData Source:=rngBereich
        With .Parent
            .Left = Range("A2").Left
            .Top = Range("A2").Top
            .Width = Range("A2:E2").Width
            .Height = Range("A2:A32").Height
        End With
    End With
End Sub
Bis später
Karin



Anzeige
AW: Diagramme aus Tabelle
19.06.2023 11:43:20
MMRH
Hi. ich habe auf der x Achse nur eine 1 stehen. ich war in der hochgeladenen Datei und habe sogar nur F-j statt wie ursprünglich F-ae im code stehen lassen.


AW: Diagramme aus Tabelle
19.06.2023 12:22:10
Beverly
Sub DiaErstellen()
    Dim rngDia As Range
    With Worksheets("Datenbasis")
        Set rngDia = Union(.Range("F1:AE1"), .Range("F17:AE17"))
    End With
    With ActiveSheet.Shapes.AddChart2(201, xlColumnClustered, 0, 0, 0, 0).Chart
        .ChartType = xlColumnClustered
        .SetSourceData Source:=rngDia, PlotBy:=xlRows  '== Dieser Zusatz ist bei dir notwendig!!
        With .Parent
            .Left = Range("A2").Left
            .Top = Range("A2").Top
            .Width = Range("A2:E2").Width
            .Height = Range("A2:A32").Height
        End With
    End With
End Sub
Bis später
Karin


Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige