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

Forumthread: Makro um automatisch Diagramme zu erzeugen

Makro um automatisch Diagramme zu erzeugen
09.04.2015 10:56:37
Ernst
Hallo liebe Community,
ich habe ein Problem und weiß nicht so recht weiter. Mit Makros und VBA kenne ich mich nur insofern aus, dass ich weiß, dass es sie gibt und vielleicht meine Rettung sein könnten. ;-)
Folgendes Problem habe ich: Ich habe eine Tabelle zugeschickt bekommen, die mehr als 1000 Zeilen hat und aus der ich jede Menge Diagramme erstellen soll. In Spalte A stehen Ländernamen. Diese werden in Spalte B nochmal in unterschiedliche Jahreszahlen (2009-2013) gegliedert. In Spalte C und D werden entsprechende Zahlen zu den Jahren (und dem Land) angezeigt. Diese will ich nun in der Diagrammform "Gestapelte Säule (100%)" darstellen lassen.
Userbild
Das Excel-Sheet hat über 1000 Zeilen und mit jeder sechsten Zeile beginnt wieder ein neues Land mit den Jahren 2009-2013. D.h. würde ich jedem Land manuell ein Diagramm erstellen, wären das über 150 Länder.
Schön wäre es, wenn die Diagramme auch alle sichtbar wären. Alternativ (falls es die Sache in irgendeiner Form einfacher macht) könnte auch jedes Land zunächst in einen Reiter kopiert und anschließend das Diagramm entworfen werden. Hier müsste aber auch der Reiternamen angepasst werden. Weiß nicht, ob das überhaupt funktioniert... ;-)
Ich bedanke mich schon mal im Voraus und hoffe meine Probleme gut geschildert zu haben. =)
Liebe Grüße

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro um automatisch Diagramme zu erzeugen
09.04.2015 11:09:17
Beverly
Hi Ernst,
auf jeden Fall ist es übersichtlicher, wenn du für jedes Land ein eigenes Tabellenblatt verwendest.
Den Code für das Erstellen eines Diagramms kannst du mit dem Makrorekorder aufzeichnen, indem du es einfach von Hand erstellst und dabei den Makrorekorder mitlaufen lässt. Im Anschluss kannst du eine Beispielmappe mit dem aufgezeichneten Code für 1 Diagramm hochladen - dann können wir ihn vereinfachen (der Makrorekorder zeichnet jeden Schritt auf, es werden aber nicht unbedingt auch alle tatsächlich benötigt).


Anzeige
AW: Makro um automatisch Diagramme zu erzeugen
09.04.2015 11:25:00
Ernst
Hallo Beverly,
vielen Dank für deine Antwort. Wenn ich alles richtig verstanden und gemacht habe, wäre das hier der Code.
Sub Diagramm()
' Diagramm Makro
Range("A2:E6").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlColumnStacked100
ActiveChart.SetSourceData Source:=Range( _
"'Developing Countries, Total'!$A$2:$E$6")
End Sub

Nach meinen mehr als laienhaften Kenntnissen gäbe es jetzt zwei Probleme. Zum einen muss ich die Hauptdaten ja alle erstmal separiert in die Reiter kriegen. Und dann müsste das Makro jeden Reiter abgehen und die entsprechenden Diagramme erstellen. Sehe ich das so richtig?
Vielen Dank in jedem Fall für die Hilfe!!!

Anzeige
AW: Makro um automatisch Diagramme zu erzeugen
09.04.2015 11:42:21
Beverly
Hi,
ja, das siehst du richtig.
Lade eine Beispielmappe mit Daten für 2-3 zu erstellende Diagramme hoch, denn du hast ja die Zeit fürs Erstellen bereits investiert.


AW: Makro um automatisch Diagramme zu erzeugen
09.04.2015 12:00:08
Ernst
Hallo Beverly,
hier ist eine Beispielmappe. Herzlichen Dank schon mal für deine Antworten. =)
https://www.herber.de/bbs/user/96968.xlsx

Anzeige
AW: Makro um automatisch Diagramme zu erzeugen
09.04.2015 12:48:11
Beverly
Hi,
Sub DiasErstellen()
Dim lngLetzte As Long
Dim lngZeile As Long
Dim wksTab As Worksheet
' letzte belegte Zeile in Spalte B ermitteln
lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 2)), Cells(Rows.Count, 2).End(xlUp).Row, Rows. _
Count)
' Bildschirmaktualisierung aus
Application.ScreenUpdating = False
With Worksheets("Alle Daten")
' Schleife über alle Zeilen in 5er Schritten
For lngZeile = 2 To lngLetzte Step 5
' Tabellenblatt hinzufügen
Set wksTab = Worksheets.Add
' an die letzte Position schieben
wksTab.Move after:=Worksheets(Worksheets.Count)
' laufenden Zellbereich aus "Alle Daten" in neues Tabellenblatt kopieren
.Range(.Cells(lngZeile, 1), .Cells(lngZeile + 4, 4)).Copy wksTab.Range("A2:D6")
' Überschrift kopieren
.Range("A1:D1").Copy wksTab.Range("A1")
With wksTab
' Name des Tabellenblattes
.Name = .Range("A2")
' Diagramm hinzufügen
With .Shapes.AddChart(0, 0, 0, 0).Chart
.ChartType = xlColumnStacked100
' Wertebereich hinzufügen
.SetSourceData Source:=wksTab.Range("C2:D6")
' Achsenbeschriftung hinzufügen
.SeriesCollection(1).XValues = wksTab.Range("B2:B6")
' Diagramm positionieren
With .Parent
.Top = Range("E3").Top
.Left = Range("E3").Left
.Height = 200
.Width = 350
End With
End With
End With
Next lngZeile
End With
' Bildschirmaktualisierung ein
Application.ScreenUpdating = True
End Sub


Anzeige
AW: Makro um automatisch Diagramme zu erzeugen
09.04.2015 22:50:21
Ernst
Genial. Tausend Dank Beverly!!!!!
Eine Frage hätte ich trotzdem noch. Ist es auch möglich mit dem Makro einen Diagrammtitel zu generieren? Also entsprechend dem Ländernamen?
Wirklich super... ich freue mich riesig.

AW: Makro um automatisch Diagramme zu erzeugen
10.04.2015 07:53:50
Beverly
Ja, das ist möglich - damit ist deine Frage eigentlich beantwortet ;-)
Da ich aber annehme, du möchtest auch wissen wie, hier also meine Antwort auf deine nicht gestellte Frage: ergänze den Code vor der Kommentarzeile "Diagramm positionieren" durch die folgenden beiden Codezeilen
                    .HasTitle = True
.ChartTitle.Caption = wksTab.Name


Anzeige
AW: Makro um automatisch Diagramme zu erzeugen
13.04.2015 10:43:55
Ernst
Vielen herzlichen Dank! Das hat alles ganz wunderbar funktioniert... =)
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Diagramme automatisch in Excel erstellen mit Makros


Schritt-für-Schritt-Anleitung

Um Diagramme in Excel automatisch zu erstellen, kannst du ein VBA-Makro verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung, um dir den Einstieg zu erleichtern.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“ und wähle „Einfügen“ > „Modul“.

  3. Füge den folgenden Code ein:

    Sub DiasErstellen()
        Dim lngLetzte As Long
        Dim lngZeile As Long
        Dim wksTab As Worksheet
    
        ' letzte belegte Zeile in Spalte B ermitteln
        lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 2)), Cells(Rows.Count, 2).End(xlUp).Row, Rows.Count)
    
        ' Bildschirmaktualisierung aus
        Application.ScreenUpdating = False
    
        With Worksheets("Alle Daten")
            ' Schleife über alle Zeilen in 5er Schritten
            For lngZeile = 2 To lngLetzte Step 5
                ' Tabellenblatt hinzufügen
                Set wksTab = Worksheets.Add
                wksTab.Move after:=Worksheets(Worksheets.Count)
                .Range(.Cells(lngZeile, 1), .Cells(lngZeile + 4, 4)).Copy wksTab.Range("A2:D6")
                .Range("A1:D1").Copy wksTab.Range("A1")
    
                With wksTab
                    .Name = .Range("A2")
                    With .Shapes.AddChart(0, 0, 0, 0).Chart
                        .ChartType = xlColumnStacked100
                        .SetSourceData Source:=wksTab.Range("C2:D6")
                        .SeriesCollection(1).XValues = wksTab.Range("B2:B6")
                        With .Parent
                            .Top = Range("E3").Top
                            .Left = Range("E3").Left
                            .Height = 200
                            .Width = 350
                        End With
                    End With
                End With
            Next lngZeile
        End With
    
        Application.ScreenUpdating = True
    End Sub
  4. Führe das Makro aus: Drücke F5 im VBA-Editor, um das Makro auszuführen.

Jetzt solltest du in der Lage sein, Diagramme automatisch in Excel zu erstellen!


Häufige Fehler und Lösungen

  • Fehler: „Subscript out of range“

    • Lösung: Überprüfe, ob der Name des Arbeitsblatts "Alle Daten" tatsächlich existiert. Wenn nicht, passe den Code entsprechend an.
  • Diagramme werden nicht angezeigt

    • Lösung: Achte darauf, dass die Daten im richtigen Format vorliegen und die Zellen korrekt referenziert werden.

Alternative Methoden

Falls du kein VBA verwenden möchtest, kannst du auch den Makrorekorder nutzen, um Diagramme zu erstellen. Starte den Rekorder, erstelle ein Diagramm manuell und stoppe dann den Rekorder. Du erhältst den entsprechenden VBA-Code, den du anpassen kannst.


Praktische Beispiele

Ein einfaches Beispiel für das Erstellen eines Liniendiagramms ist der folgende Code:

Sub LiniendiagrammErstellen()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Daten")

    With ws.Shapes.AddChart.Chart
        .ChartType = xlLine
        .SetSourceData Source:=ws.Range("A1:B10")
        .HasTitle = True
        .ChartTitle.Text = "Verlauf der Daten"
    End With
End Sub

Dieser Code erstellt ein Liniendiagramm basierend auf den Daten im Bereich A1:B10.


Tipps für Profis

  • Diagrammtitel hinzufügen: Um den Diagrammtitel automatisch mit dem Ländernamen zu generieren, füge diesen Code in dein Makro ein:

    .HasTitle = True
    .ChartTitle.Caption = wksTab.Name
  • Automatisierung: Du kannst die Diagramme so konfigurieren, dass sie sich dynamisch aktualisieren, wenn sich die zugrundeliegenden Daten ändern.


FAQ: Häufige Fragen

1. Wie kann ich ein Diagramm in Excel automatisch erstellen? Um ein Diagramm automatisch zu erstellen, benötigst du ein Makro, das die Daten analysiert und ein Diagramm generiert. Siehe die Schritt-für-Schritt-Anleitung.

2. Welche Excel-Versionen unterstützen VBA? VBA ist in den meisten modernen Excel-Versionen verfügbar, einschließlich Excel 2010, 2013, 2016, 2019 und Microsoft 365.

3. Kann ich mehrere Diagramme in einem Makro erstellen? Ja, du kannst ein Makro schreiben, das in einer Schleife mehrere Diagramme erstellt, wie im Beispiel gezeigt.

4. Wie kann ich die Diagramme anpassen? Du kannst den Diagrammtyp und das Design direkt im VBA-Code anpassen, indem du die Eigenschaften des Diagramms änderst.

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