Anzeige
Archiv - Navigation
1192to1196
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Diagramme schnell erstellen

Diagramme schnell erstellen
Maris
Nabend,
ich muß ca. 300 Diagramme erstellen mit 2 Datenquellen, also 2 Achsen...
Die 300 Diagramme sind in 3 bereiche aufgeteilt, sodass jeweils 100 Diagramme die selben Struktur aufweisen, jedoch andere Datenquellen haben. Die Daten befinden sich leider in verschieden Tabellenblättern sind aber vom Aufbau her identisch...
Gibt es irgendeine Möglichkeit/Stichwort wie man Diagramme schnell auf andere Datenquellen anpasst?
Bin für jeden Tipp dankbar!
Gruß,
Maris

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

Betreff
Benutzer
Anzeige
AW: Diagramme schnell erstellen
12.01.2011 19:16:50
zellner
Hallo Maris,
auf jeden Fall das einmal erstellte Diagramm als Vorlage speichern
Userbild
Gruß
Raphael
AW: Diagramme schnell erstellen
13.01.2011 00:06:43
Beverly
Hi Maris,
so richtig habe ich deine Beschreibung leider nicht verstanden. Meinst du damit, dass du 100 vorhandene Diagramme (die sich in einem Tabellenblatt befinden) in 2 weitere Tabellenblätter kopieren und dann den Bezug auf das neue Blatt ändern willst, wobei sie aber den selben Zellbereich als Wertebereich beibehalten sollen?
Sub DiaAnpassen()
Dim intReihe As Integer
Dim chrDiagramm As ChartObject
For Each chrDiagramm In ActiveSheet.ChartObjects
With chrDiagramm.Chart
For intReihe = 1 To .SeriesCollection.Count
.SeriesCollection(intReihe).Formula = _
Application.Substitute(.SeriesCollection(intReihe).Formula, _
"Tabelle1!", ActiveSheet.Name & "!")
Next intReihe
End With
Next chrDiagramm
End Sub

Hierbei wird der Bezug auf Tabelle1 in der Datenreihenformel durch den Namen des aktiven Tabellenblattes ersetzt.


Anzeige
AW: Diagramme schnell erstellen
13.01.2011 09:32:15
Maris
Hi,
hier mal eine Beispieltabelle. Die Daten beziehen sich im auf mehrere Tabellenblätter A1 und B1..., wobei die Kennzahlen 1 und 2 gegenübergestellt werden und im diagramm angezeigt werden. Die frage ist wie kann ich die weiteren Diagramme schnell erstellen...
Gruß
Maris
https://www.herber.de/bbs/user/73059.xls
AW: Diagramme schnell erstellen
13.01.2011 15:32:45
Beverly
Hi Maris,
das Ganze ist eine sehr komplexe Aufgabe und der Aufwand, alles per VBA lösen zu wollen, übersteigt die Hilfe in einem Forum - deshalb ist hier auch Handarbeit von deiner Seite gefragt. Erstelle in jedem Tabellenblatt für jede "Rubrik" je 1 Diagramm mit dem 1. Wertebereich und kopiere (oder verschiebe) dann alle an die betreffende Stelle im Tabellenblatt "Charts", und zwar so, dass die linke obere Ecke genau so positioniert ist wie bei dem dort bereits vorhandenen Diagramm - also jeweils 2 Zeilen unter und genau an der linken Kante der Zelle in Spalte C, die den Tabellenblattnamen enthält. Markiere dann im Tabellenblatt "Charts" jeweils das äußerste linke Diagramm und lasse folgenden Code ablaufen:
Sub DiasErstellen()
Dim intDia As Integer
Dim intReihe As Integer
Dim intZaehler As Integer
Dim strBereich As String
Dim strBereichNeu As String
Dim varTyp As Variant
Dim chrDiagramm As ChartObject
On Error Resume Next
varTyp = Selection.Name
On Error GoTo 0
If varTyp = "Diagramm" Then
Set chrDiagramm = ActiveChart.Parent
intZaehler = 2
Application.ScreenUpdating = False
For intDia = 2 To 8
chrDiagramm.Copy
ActiveSheet.Paste
With ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count)
.Top = chrDiagramm.Top
.Left = chrDiagramm.Left + chrDiagramm.Width * (intDia - 1)
For intReihe = 1 To .Chart.SeriesCollection.Count
strBereich = .Chart.SeriesCollection(intReihe).Formula
strBereich = Mid(strBereich, InStrRev(strBereich, "!") + 1)
strBereich = Left(strBereich, InStrRev(strBereich, ",") - 1)
strBereich = Application.Substitute(strBereich, Range(strBereich).Row,  _
Range(strBereich).Row)
strBereichNeu = Application.Substitute(strBereich, Range(strBereich).Row,  _
Range(strBereich).Row + intZaehler)
.Chart.SeriesCollection(intReihe).Formula = Application.Substitute(.Chart. _
SeriesCollection(intReihe).Formula, strBereich, strBereichNeu)
strBereich = Left(.Chart.SeriesCollection(intReihe).Formula, InStr(.Chart. _
SeriesCollection(intReihe).Formula, ",") - 1)
strBereich = Mid(strBereich, InStr(strBereich, "$"))
strBereichNeu = Application.Substitute(strBereich, Range(strBereich).Row,  _
Range(strBereich).Row + intZaehler)
.Chart.SeriesCollection(intReihe).Formula = Application.Substitute(.Chart. _
SeriesCollection(intReihe).Formula, "!" & strBereich & ",", "!" & strBereichNeu & ",")
strBereich = Left(.Chart.SeriesCollection(intReihe).Formula, InStr(.Chart. _
SeriesCollection(intReihe).Formula, ",") - 1)
strBereich = Range(Mid(strBereich, InStr(strBereich, "(") + 1)).Parent.Name
.Chart.SeriesCollection(intReihe).Formula = Application.Substitute(.Chart. _
SeriesCollection(intReihe).Formula, "'" & strBereich & "'", chrDiagramm.TopLeftCell.Offset(-2, 0))
Next intReihe
strBereich = Left(.Chart.SeriesCollection(1).Formula, InStr(.Chart. _
SeriesCollection(1).Formula, ",") - 1)
strBereich = Range(Mid(strBereich, InStr(strBereich, "(") + 1))
.Chart.ChartTitle.Caption = Left(.Chart.ChartTitle.Caption, InStr(.Chart. _
ChartTitle.Caption, " ")) & strBereich
strBereich = Left(.Chart.SeriesCollection(2).Formula, InStr(.Chart. _
SeriesCollection(2).Formula, ",") - 1)
strBereich = Range(Mid(strBereich, InStr(strBereich, "(") + 1))
.Chart.ChartTitle.Caption = .Chart.ChartTitle.Caption & " & " & strBereich
End With
intZaehler = intZaehler + 2
Next intDia
Set chrDiagramm = Nothing
Application.ScreenUpdating = True
Else
MsgBox "Kein Diagramm ausgewählt"
End If
End Sub

Daraufhin sollten "Zeilenweise" angeordnet noch 7 weitere Diagramme erstellt werden, die sich auf das selbe Tabellenblatt und die selbe "Rubrik" beziehen, nur dass der Wertebereich jeweils um 2 Zeilen nach unten versetzt ist.


Anzeige
AW: Diagramme schnell erstellen
13.01.2011 16:30:47
Maris
Hallo Karin,
vielen Dank für die Mühe einen so komplexen code zu schreiben, echt klasse!!!! Leider verstehe ich nicht wie ich was in der Mappe anordnen muß :-(. Wäre es möglich das du mir anhand der Beispieldatei zeigst wie du es meinst... komm leider nicht mit!
Gruß,
Maris
AW: Diagramme schnell erstellen
13.01.2011 18:06:48
Beverly
Hi Maris,
dann noch etwas einfacher: aktiviere das Tabellenblatt A1 und führe folgenden Code aus
Sub DiasKopieren()
Dim intDia As Integer
Dim intZaehler As Integer
intZaehler = 21
For intDia = 1 To 6
ActiveSheet.ChartObjects(1).Copy
ActiveSheet.Paste
With ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count)
.Top = ActiveSheet.Cells(intZaehler, 5).Top
.Left = ActiveSheet.Cells(intZaehler, 5).Left
.Chart.SeriesCollection(1).Formula = Application.Substitute(.Chart.SeriesCollection( _
1).Formula, "$A$4", "$A$" & intZaehler)
.Chart.SeriesCollection(1).Formula = Application.Substitute(.Chart.SeriesCollection( _
1).Formula, "$B$4:$C$4", "$B$" & intZaehler & ":$C$" & intZaehler)
.Chart.SeriesCollection(2).Formula = Application.Substitute(.Chart.SeriesCollection( _
2).Formula, "$A$5", "$A$" & intZaehler + 1)
.Chart.SeriesCollection(2).Formula = Application.Substitute(.Chart.SeriesCollection( _
2).Formula, "$B$5:$C$5", "$B$" & intZaehler + 1 & ":$C$" & intZaehler + 1)
End With
intZaehler = intZaehler + 17
Next intDia
End Sub

Damit werden 6 weitere Diagramme im Tabellenblatt A1 erzeugt mit dem richtigen Wertebereich. Kopiere (oder verschiebe) diese Diagramme ins Tabellenblatt "Charts" und positioniere sie wie beschrieben - jetzt sind insgesamt 7 Diagramme im Tabellenblatt "Charts". Jedes der 7, einschließlich des schon vorhandenen, markierst du nacheinander und führst den Code aus meinem vorhergehenden Beitrag aus - damit ist Tabellenblatt A1 abgearbeitet.
Aktiviere nun Tabellenblatt B1 und erstelle 1 Diagramm (so wie im Tabellenblatt A1) oder kopiere das aus A1 und passe den Wertebereich entsprechend von Hand an - musst dazu nur jede der beiden Datenreihen markieren und in der Bearbeitungsleiste 'A1' durch 'B1' ersetzen. Führe dann den Code aus diesem Beitrag aus und kopiere (oder verschiebe) anschließend wieder alle Diagramme ins Tabellenblatt "Charts" an die richtige Position. Danach wieder jedes der neu hinzugekommenen Diagramme markieren und den Code aus dem vorhergehenden Beitrag ausführen. Damit ist Tabellenblatt B1 abgearbeitet.
Diesen gesamten Prozess musst du so lange wiederholen, bis du mit allen Tabellenblättern durch bist.


Anzeige
AW: Diagramme schnell erstellen
14.01.2011 10:34:15
Maris
Hi Karin,
ich bekomme einen Laufzeitfehler 1001 wenn ich den Code in A1 ausführe :-(. Anwendungs oder objektorientierter Fehler... Mache ich was falsch?
Gruß,
Maris
AW: Diagramme schnell erstellen
14.01.2011 11:09:56
Beverly
Hi Maris,
kann ich leider nicht nachvollziehen - der Code funktioniert fehlerlos in Excel2002 und Excel2007.
Welche Zeile ist denn gelb hinterlegt wenn der Debugger anspringt?


Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige