Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA - X-Achse bei Balken und Liniendiagramm

VBA - X-Achse bei Balken und Liniendiagramm
26.08.2016 19:07:53
AHK
Liebe Forumsmitglieder,
ich habe ein Problem mit der Erstellung eines eingebetteten Diagramms.
Darin sollen Messwerte (in Tabellenspalte "D") als Histogramm (Säulendiagramm) dargestellt werden, die Summenwerte (in Tabellenspalte "C") als Liniendiagramm.
Hierfür weise ich den beiden Datenquellen per VBA eine unterschiedliche X-Achse zu.
Das klappt auch prima. Bis ich mit .SeriesCollection(2).ChartType = xlColumnClustered das Säulendiagramm zuweise. Dann verschiebt sich die X-Achse.
Ich habe versucht die Skalierung der zweiten X-Achse der primären X-Achse gleichzusetzen, bekomme bei einer Codezeile à la .Axes(xlCategory, xlSecondary).MinimumScale = 100 aber eine Fehlermeldung.
Wie bekomme ich bei unterschiedlichen Diagrammtypen eine einheitliche X-Achse mit VBA hin ?
Ich würde mich riesig über Unterstützung freuen. Habe die Exceltabelle (ohne Makro) angefügt.
https://www.herber.de/bbs/user/107858.xlsx
Viele Grüße,
AHK
Der Makro-Code ist wie folgt:
Sub Makro1()
' Erstellen des Verteilungsdiagramms
Dim co As ChartObject
Dim r As Range
Set r = Range("F10:M18")
Set co = ActiveSheet.ChartObjects.Add(r.Left, r.Top, r.Width, r.height)
co.Name = "histDiag"
With co.Chart
.HasTitle = True
.ChartTitle.Text = "Auswertung"
.SeriesCollection.NewSeries
.SeriesCollection(1).ChartType = xlXYScatterLinesNoMarkers
.SeriesCollection(1).Name = "=Test!$C$10"
.SeriesCollection(1).Values = "=Test!$C$11:$C$112"
.SeriesCollection(1).XValues = "=Test!$B$11:$B$112"
.HasAxis(xlValue, xlPrimary) = True
.HasAxis(xlCategory, xlPrimary) = True
.Axes(xlCategory, xlPrimary).MinimumScale = 100
.Axes(xlCategory, xlPrimary).MaximumScale = 2000
.Axes(xlCategory, xlPrimary).MajorUnit = 500
.Axes(xlCategory, xlPrimary).MinorUnit = 100
.Axes(xlCategory, xlPrimary).CrossesAt = 0
.SeriesCollection.NewSeries
.SeriesCollection(2).Name = "=Test!$D$10"
.SeriesCollection(2).Values = "=Test!$D$11:$D$112"
.SeriesCollection(2).XValues = "=Test!$B$11:$B$112"
.SeriesCollection(2).AxisGroup = 2
.SeriesCollection(2).ChartType = xlColumnClustered
.HasAxis(xlValue, xlSecondary) = True
.HasAxis(xlCategory, xlSecondary) = True
End With
End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Säulen- und Liniendiagramm
26.08.2016 20:02:12
Beverly
Hi,
du darfst kein Punkt-Daigramm verwenden sondern musst Linie nehmen:
    Dim co As ChartObject
Dim r As Range
Set r = Range("F10:M18")
Set co = ActiveSheet.ChartObjects.Add(r.Left, r.Top, r.Width, r.Height)
co.Name = "histDiag"
With co.Chart
.HasTitle = True
.ChartTitle.Text = "Auswertung"
With .SeriesCollection.NewSeries
.ChartType = xlLine
.Name = "=Test!$C$10"
.Values = "=Test!$C$11:$C$112"
.XValues = "=Test!$B$11:$B$112"
End With
.HasAxis(xlValue, xlPrimary) = True
.HasAxis(xlCategory, xlPrimary) = True
With .SeriesCollection.NewSeries
.Name = "=Test!$D$10"
.Values = "=Test!$D$11:$D$112"
.XValues = "=Test!$B$11:$B$112"
.AxisGroup = 2
.ChartType = xlColumnClustered
End With
.HasAxis(xlValue, xlSecondary) = True
.HasAxis(xlCategory, xlSecondary) = True
End With



Anzeige
AW: Säulen- und Liniendiagramm
27.08.2016 16:43:58
AHK
Hallo Karin,
danke. Es kann manchmal so einfach sein.
Funktioniert.
Viele Grüße,
AHK
;

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
Anzeige

Infobox / Tutorial

X-Achse bei Balken und Liniendiagramm in Excel anpassen


Schritt-für-Schritt-Anleitung

Um ein balken und liniendiagramm zu kombinieren und dabei eine einheitliche X-Achse zu gewährleisten, kannst du folgenden VBA-Code verwenden. Dieser Code erstellt ein Histogramm (Säulendiagramm) und ein Liniendiagramm in einem Diagramm:

Sub Makro1()
    ' Erstellen des Verteilungsdiagramms
    Dim co As ChartObject
    Dim r As Range
    Set r = Range("F10:M18")
    Set co = ActiveSheet.ChartObjects.Add(r.Left, r.Top, r.Width, r.Height)
    co.Name = "histDiag"
    With co.Chart
        .HasTitle = True
        .ChartTitle.Text = "Auswertung"
        .SeriesCollection.NewSeries
        .SeriesCollection(1).ChartType = xlXYScatterLinesNoMarkers
        .SeriesCollection(1).Name = "=Test!$C$10"
        .SeriesCollection(1).Values = "=Test!$C$11:$C$112"
        .SeriesCollection(1).XValues = "=Test!$B$11:$B$112"
        .HasAxis(xlValue, xlPrimary) = True
        .HasAxis(xlCategory, xlPrimary) = True
        .Axes(xlCategory, xlPrimary).MinimumScale = 100
        .Axes(xlCategory, xlPrimary).MaximumScale = 2000
        .Axes(xlCategory, xlPrimary).MajorUnit = 500
        .Axes(xlCategory, xlPrimary).MinorUnit = 100
        .Axes(xlCategory, xlPrimary).CrossesAt = 0
        .SeriesCollection.NewSeries
        .SeriesCollection(2).Name = "=Test!$D$10"
        .SeriesCollection(2).Values = "=Test!$D$11:$D$112"
        .SeriesCollection(2).XValues = "=Test!$B$11:$B$112"
        .SeriesCollection(2).AxisGroup = 2
        .SeriesCollection(2).ChartType = xlColumnClustered
        .HasAxis(xlValue, xlSecondary) = True
        .HasAxis(xlCategory, xlSecondary) = True
    End With
End Sub

In diesem Code wird das ChartType für die Datenreihe 1 auf xlXYScatterLinesNoMarkers gesetzt und für die Datenreihe 2 auf xlColumnClustered.


Häufige Fehler und Lösungen

  1. Fehlermeldung bei der Skalierung der X-Achse

    • Wenn du versuchst, .Axes(xlCategory, xlSecondary).MinimumScale = 100 zu setzen und eine Fehlermeldung erhältst, überprüfe, ob die X-Achse korrekt zugewiesen ist.
  2. Trendlinie nicht auswählbar

    • Manchmal kann die Excel Trendlinie nicht auswählbar sein, wenn die Datenreihe nicht korrekt konfiguriert ist. Stelle sicher, dass du die richtige Achse für die Trendlinie verwendest.

Alternative Methoden

Eine weitere Möglichkeit, ein Excel Diagramm mit Balken und Linien zu erstellen, ist die Verwendung der Diagrammtypen direkt in Excel ohne VBA. Du kannst zuerst das Säulendiagramm erstellen und dann das Liniendiagramm hinzufügen und die Achsen manuell anpassen.

  1. Erstelle ein Säulendiagramm.
  2. Füge die gewünschte Datenreihe für die Linie hinzu.
  3. Klicke mit der rechten Maustaste auf die Linie und wähle "Datenreihe formatieren", um die Achse zu ändern.

Praktische Beispiele

  • Beispiel 1: Erstelle ein Diagramm, das die Verkaufszahlen (Säulen) und den Trend (Linie) eines Produkts über mehrere Monate darstellt.
  • Beispiel 2: Kombiniere in einem Diagramm die Temperaturdaten (Linie) und die Verkaufszahlen (Säulen) über einen bestimmten Zeitraum.

Tipps für Profis

  • Verwende xlXYScatterLinesNoMarkers für die Linie, um ein klares Bild zu erzeugen.
  • Nutze die NewSeries-Methode, um mehrere Datenreihen effizient hinzuzufügen.
  • Achte darauf, dass die Achsen korrekt skaliert sind, um Missverständnisse bei der Dateninterpretation zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich die X-Achse für unterschiedliche Diagrammtypen in Excel anpassen? Um die X-Achse für verschiedene Diagrammtypen anzupassen, stelle sicher, dass du die Achsen korrekt mit VBA zuweist und die richtigen Skalierungsparameter verwendest.

2. Was tun, wenn die Trendlinie nicht auswählbar ist? Wenn die Trendlinie nicht auswählbar ist, überprüfe, ob die Datenreihe, zu der du die Trendlinie hinzufügen möchtest, korrekt konfiguriert ist und ob sie auf der richtigen Achse dargestellt wird.

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