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: Punktdiagramm xy mit VBA erstellen

Punktdiagramm xy mit VBA erstellen
04.06.2013 20:25:08
Rainer
Hallo zusammen,
ich habe folgendes Problem / folgende Aufgabenstellung:
Es muss aus vielen Messergebnissen welche jeweils aus X-Werten und den dazugehörigen Y-Werten bestehen, ein Punktediagramm mit vielen Datenreihen erstellen. Die Werte stehen immer in einer Spalte untereinander und der dazugehörige Wert steht ebenfalls untereinander in einer nebenstehenden Spalte. Da jede der 200 Datenreihen aus ca. 200 Messpunkten besteht, ist eine manuelle Eingabe sehr zeitaufwendig.
Details:
Datensatz 1:
Datenüberschrift: A2:B2 (verbundene Zelle)
X-Werte: A6:A220
Y-Werte: B6:B220
Datensatz 2:
Datenüberschrift: C2:D2 (verbundene Zelle)
X-Werte: C6:C220
Y-Werte: D6:D220
...
Da es zu viele Spalten für ein Tabellenblatt sind, wird die Tabelle auf einem zweiten Tabellenblatt fortgeführt.
Wie könnte ein Makro aussehen, das dieses Diagramm automatisch generiert?
Habe es mit einem teiweise manuellen Makro versucht - leider funktioniert dies nicht.
Vielen Dank für eure Hilfe!
Gruß,
Rainer
Sub M_Diagramm()
Sheets("Kurvenwerte 1").Select
Charts.Add
ActiveChart.ChartType = xlXYScatterSmooth
ActiveChart.SetSourceData Source:=Sheets("Kurvenwerte 1").Range("C252")
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "='Kurvenwerte 1'!R6C1:R220C1"
ActiveChart.SeriesCollection(1).Values = "='Kurvenwerte 1'!R6C2:R220C2"
ActiveChart.SeriesCollection(1).Name = "='Kurvenwerte 1'!R2C1:R2C2"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(2).XValues = "='Kurvenwerte 1'!R6C3:R220C3"
ActiveChart.SeriesCollection(2).Values = "='Kurvenwerte 1'!R6C4:R220C4"
ActiveChart.SeriesCollection(2).Name = "='Kurvenwerte 1'!R2C3:R2C4"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(3).XValues = "='Kurvenwerte 1'!R6C5:R220C5"
ActiveChart.SeriesCollection(3).Values = "='Kurvenwerte 1'!R6C6:R220C6"
ActiveChart.SeriesCollection(3).Name = "='Kurvenwerte 1 !R2C5:R2C6"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(4).XValues = "='Kurvenwerte 1'!R6C7:R220C7"
ActiveChart.SeriesCollection(4).Values = "='Kurvenwerte 1'!R6C8:R220C8"
ActiveChart.SeriesCollection(4).Name = "='Kurvenwerte 1 !R2C7:R2C8"
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="RL Diagramm"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "RL-Diagramm"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Distance [mm]"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Force [kN]"
End With
Charts.Add
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Punktdiagramm xy mit VBA erstellen
04.06.2013 20:59:08
Uduuh
Hallo,
teste mal
Sub M_Diagramm()
Dim i As Integer, n As Integer
Application.ScreenUpdating = False
Sheets("Kurvenwerte 1").Select
Charts.Add
ActiveChart.ChartType = xlXYScatterSmooth
ActiveChart.SetSourceData Source:=Sheets("Kurvenwerte 1").Range("C252")
With Sheets("Kurvenwerte 1")
For i = 1 To .Cells(6, 1).End(xlToRight).Column - 1 Step 2
n = n + 1
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(n).XValues = "='Kurvenwerte 1'!R6C" & i & ":R220C" & i
ActiveChart.SeriesCollection(n).Values = "='Kurvenwerte 1'!R6C" & i + 1 & ":R220C" & i + _
1
ActiveChart.SeriesCollection(n).Name = "='Kurvenwerte 1'!R2C" & i & ":R2C" & i + 1
Next i
End With
With Sheets("Kurvenwerte 2")
For i = 1 To .Cells(6, 1).End(xlToRight).Column - 1 Step 2
n = n + 1
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(n).XValues = "='Kurvenwerte 2'!R6C" & i & ":R220C" & i
ActiveChart.SeriesCollection(n).Values = "='Kurvenwerte 2'!R6C" & i + 1 & ":R220C" & i + _
1
ActiveChart.SeriesCollection(n).Name = "='Kurvenwerte 2'!R2C" & i & ":R2C" & i + 1
Next i
End With
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="RL Diagramm"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "RL-Diagramm"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Distance [mm]"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Force [kN]"
End With
End Sub
Gruß aus’m Pott
Udo

Anzeige
AW: Punktdiagramm xy mit VBA erstellen
04.06.2013 21:16:41
Rainer
Hallo Udo,
was soll ich dazu noch sagen - einfach genial!!! Hat auf Anhieb funktioniert ;-) Hast mir viel Arbeit erspart. Vielen Dank!!
Veile Grüße aus´m Schwabenland,
Rainer
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Punktdiagramm XY mit VBA erstellen


Schritt-für-Schritt-Anleitung

Um ein Punktdiagramm mit Excel VBA zu erstellen, befolge diese Schritte:

  1. Daten vorbereiten: Stelle sicher, dass deine Daten in zwei Spalten organisiert sind – eine für X-Werte und eine für Y-Werte. Wenn du mehrere Datenreihen hast, sollten sie in benachbarten Spalten angeordnet sein.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Neues Modul hinzufügen: Klicke im Menü auf Einfügen und wähle Modul.

  4. VBA-Code eingeben: Füge den folgenden VBA-Code in das Modul ein:

    Sub M_Diagramm()
        Dim i As Integer, n As Integer
        Application.ScreenUpdating = False
        Sheets("Kurvenwerte 1").Select
        Charts.Add
        ActiveChart.ChartType = xlXYScatterSmooth
        With Sheets("Kurvenwerte 1")
            For i = 1 To .Cells(6, 1).End(xlToRight).Column - 1 Step 2
                n = n + 1
                ActiveChart.SeriesCollection.NewSeries
                ActiveChart.SeriesCollection(n).XValues = "='Kurvenwerte 1'!R6C" & i & ":R220C" & i
                ActiveChart.SeriesCollection(n).Values = "='Kurvenwerte 1'!R6C" & i + 1 & ":R220C" & i + 1
                ActiveChart.SeriesCollection(n).Name = "='Kurvenwerte 1'!R2C" & i & ":R2C" & i + 1
            Next i
        End With
        ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="RL Diagramm"
        With ActiveChart
            .HasTitle = True
            .ChartTitle.Characters.Text = "RL-Diagramm"
            .Axes(xlCategory, xlPrimary).HasTitle = True
            .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Distance [mm]"
            .Axes(xlValue, xlPrimary).HasTitle = True
            .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Force [kN]"
        End With
    End Sub
  5. Makro ausführen: Schließe den VBA-Editor und gehe zurück zu Excel. Drücke ALT + F8, wähle das Makro M_Diagramm und klicke auf Ausführen.

  6. Diagramm anpassen: Nach dem Ausführen des Makros wird dein Punktdiagramm erstellt. Du kannst es weiter anpassen, um das Aussehen zu optimieren.


Häufige Fehler und Lösungen

  • Fehler: Diagramm wird nicht erstellt
    Lösung: Stelle sicher, dass die Daten in den richtigen Zellen sind und die Tabellenblätter korrekt benannt sind.

  • Fehler: Datenreihe nicht angezeigt
    Lösung: Überprüfe, ob der Index der Spalten im VBA-Code korrekt ist. Die X- und Y-Werte müssen in benachbarten Spalten stehen.


Alternative Methoden

Wenn du kein VBA verwenden möchtest, kannst du auch manuell ein Diagramm erstellen:

  1. Daten markieren: Wähle die Daten für die X- und Y-Werte aus.
  2. Diagramm einfügen: Gehe zu Einfügen > Diagramm und wähle Punktdiagramm.
  3. Datenreihe hinzufügen: Klicke mit der rechten Maustaste auf das Diagramm und wähle Daten auswählen, um weitere Datenreihen hinzuzufügen.

Praktische Beispiele

Angenommen, du hast Daten in den Zellen A6:B220 und C6:D220. Du kannst den obigen VBA-Code anpassen, um Daten aus mehreren Bereichen zu kombinieren und so ein komplexeres Punktdiagramm zu erstellen.


Tipps für Profis

  • Daten dynamisch anpassen: Verwende Dynamic Named Ranges, um die Daten automatisch zu aktualisieren, wenn sich die Anzahl der Datenpunkte ändert.
  • Diagrammformatierung automatisieren: Füge im VBA-Code zusätzliche Formatierungsoptionen hinzu, um das Diagramm anzupassen, wie z.B. Farben, Marker-Stile und Achsentitel.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Datenreihen in einem Diagramm kombinieren?
Du kannst im VBA-Code mehrere ActiveChart.SeriesCollection.NewSeries Aufrufe verwenden, um zusätzliche Datenreihen hinzuzufügen.

2. Funktioniert dieser VBA-Code in allen Excel-Versionen?
Ja, dieser Code sollte in den meisten Excel-Versionen funktionieren, die VBA unterstützen, wie Excel 2010 und neuer.

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