Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1840to1844
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

Excel Diagramm automatisch mit VBA

Excel Diagramm automatisch mit VBA
06.08.2021 09:47:43
Michael
Guten Morgen
Ich muss ca. 300 Liniendiagramme für Kunden erstellen.
Die Daten für das jeweilige Diagramm liegen in einzelnen Zeilen, wobei einige Diagramme 30, andere 40 einzelne Zeilen haben usw.
https://www.herber.de/bbs/user/147479.xlsx
So habe ich etwa 30000 Zeilen welche zugteilt werden müssen.
Nun meine Frage: geht das auch Automatisiert?
VBA kenne ich nur aus dem Schuluntericht.

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

Betreff
Datum
Anwender
Anzeige
AW: Excel Diagramm automatisch mit VBA
06.08.2021 10:26:31
Beverly
Hi Michael,
klar kann man das per VBA lösen, aber ohne zu wissen, wie deine Diagramme aufgebaut sein sollen, ist das schlecht möglich - ein beigefügtes Beispieldiagramm wäre da sehr hilfreich gewesen.
Wie ist deine Aussage "Die Daten für das jeweilige Diagramm liegen in einzelnen Zeilen" zu verstehen:
- einerseits dass jedes Diagramm eine unterschiedliche Anzahl an Datenreihen haben kann, da immer 1 Zeile 1 Datenreihe enspricht. Dann ergeben sich jedoch keine Linien sondern jede Datenreihe besteht nur aus einem einzigen Datenpunkt oder
- andererseits dass jedes Diagramm nur 1 Datenreihe aufweist, welche eine unterschiedliche Anzahl an Datenpunkten hat
Außerdem stellt sich die Frage, WAS GENAU die Daten der einzelnen Diagramme voneinander trennt: steht in allen Zellen der Spalte A der selbe Begriff (wie in deinem Beispiel "A" für das erste, "B" für das zweite Diagramm usw.)? Sind immer die ersten beiden Datenzeilen nicht mit in das Diagramm aufzunehmen oder können es auch mehr Zeilen sein? Steht in den nicht aufzunehmenden Zeilen in Spalte B immer "VP"?

GrußformelBeverly's Excel - Inn
Anzeige
AW: Excel Diagramm automatisch mit VBA
06.08.2021 10:48:32
Michael
Guten Morgen Karin
Vielen Dank für deine Hilfe.
Hier ist jetzt mit Diagramm Vorlage:
https://www.herber.de/bbs/user/147482.xlsx
Zu deiner Frage:
Jedes Diagramm bezieht aus mehreren Zeilen Daten, wobei jede Zeile einen Datenpunkt darstellt welche wie Koordianten funktionieren. Wie du korrekt gesagt hast gibt es Datenpunkte die sich als Diagramm darstellen lassen.
A und B stehen Symbolisch für die 300 Diagramme. A ist also ein seperates Diagramm, B auch, C auch...usw.
Die ersten beiden Zeilen sind immer nicht aufzunehmen und lauten stehts VP. (Eigentlich VPLinks für die erste Zeile und VPRechts für die zweite Zeile.
Vielen Dank und Gruss
Anzeige
Rückfragen
06.08.2021 14:49:55
Beverly
Hi Michael,
dass A und B symbolisch sind und für jewels ein Diagramm stehen ist mir schon klar, mir geht es aber um etwas anderes: steht immer - so wie im hochgeladenen Beispiel - in JEDER Zeile in Spalte A für das betreffende Diagramm DERSELBE Begriff, sodass man DARAN erkennen kann, dass genau DIESE Zeilen zu DIESEM Diagramm gehören? Also Beispiel: in A2:A12 steht jeweils "A", sodass die Zeilen A4:A12 zum ersten Diagramm gehören - gemeinsames Kriterium für dieses Diagramm wäre also, dass ALLE Zeilen, in denen in Spalte A der Begriff "A" steht, zu diesem Diagramm gehören, wobei der eigentliche Wertebereich ab der 3. Zeile beginnt? Dasselbe dann für das zweite Diagramm: in A13:A25 steht jeweils "B" und die Zeilen A15:A25 gehören zum zweiten Diagramm usw. Es geht darum, dass ein bestimmtes Schema vorhanden sein MUSS, um die relevanten Zeilen zum betreffenden Diagramm erkennen und zuweisen zu können.
Und noch eine weitere Frage: wie setzt sich der Diagrammtitel zusammen, denn ich nehme an, dass nicht in jedem Diagramm "ProjektName_A_ImJahr2021" als Titel stehen soll?

GrußformelBeverly's Excel - Inn
Anzeige
AW: Rückfragen
06.08.2021 16:18:05
Michael
Moin Karin
Kurz und Knapp:
Erste Frage: Ja, A und B sind eindeutige Werte und ziehen sich über das ganze Diagramm
Zweite Frage: Programmtitel bezieht sich auf den jeweiligen Namen.
Unsere Codevariablen definieren in den folgenden Spalten definieren denn Punkt genauer. Sollte aber fürs Diagramm nicht relevant sein oder?
Gruss
Lösungsvorschlag
06.08.2021 16:52:07
Beverly
Hi Michael,
Zitat: Zweite Frage: Programmtitel bezieht sich auf den jeweiligen Namen.
Unsere Codevariablen definieren in den folgenden Spalten definieren denn Punkt genauer. Sollte aber fürs Diagramm nicht relevant sein oder?

Dass sich der Diagrammtitel auf den Namen bezieht hatte ich fast erraten, aber da du keine genaueren Angaben machst, was in welcher Spalte steht und wie es in den Diagrammtitel einfließen soll und ich das deiner Beispielmappe auch nicht entnehmen kann, kann ich dir bei den Diagrammtiteln nicht weiterhelfen und du musst sie in allen fertigen Diagrammen von Hand anpassen.
Lösung für das Erstellen der Diagramme ohne angepasste Titel:

Sub DiasErstellen()
Dim lngZeile As Long
Dim lngAnzahl As Long
Dim lngStart As Long
Dim strFormel
Dim strX As String
Dim strY As String
Dim chrDia As ChartObject
Set chrDia = ActiveSheet.ChartObjects("DiaVorlage")
For lngZeile = 13 To Columns(1).Find(What:="*", SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
lngAnzahl = Application.CountIf(Columns(1), Cells(lngZeile, 1)) - 2
chrDia.Copy
ActiveSheet.Paste
DoEvents
With ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count).Chart
strFormel = Split(.SeriesCollection(1).Formula, ",")
strX = ActiveSheet.Name & "!" & Range(Cells(lngZeile + 2, 5), _
Cells(lngZeile + 1 + lngAnzahl, 5)).Address
strY = ActiveSheet.Name & "!" & Range(Cells(lngZeile + 2, 8), _
Cells(lngZeile + 1 + lngAnzahl, 8)).Address
strFormel(1) = strX
strFormel(2) = strY
.SeriesCollection(1).Formula = Join(strFormel, ",")
With .Parent
.Top = Cells(lngZeile, 12).Top
.Left = Cells(lngZeile, 12).Left
End With
End With
lngZeile = lngZeile + lngAnzahl + 1
Next lngZeile
End Sub
Der Code macht im Groben gesagt folgendes: es wird in einer Schleife über alle Zeilen ab Zeile 13 gelaufen, da das 1. Diagramm als Vorlage bereits vorhanden ist (und vorhanden sein muss!!). Dieses 1. Diagramm wird kopiert, eingefügt, der Datenbereich angepasst und es wird an die richtige Position gesetzt.

GrußformelBeverly's Excel - Inn
Anzeige
AW: Lösungsvorschlag
06.08.2021 17:08:14
Michael
Erstmal vielen Dank für deine Hilfe.
Entschuldige meine ungenaue Antworten, aber ich bin mit Excel in diesem Unfang ein wenig überfordert ;)
Bei deinem Lösungsvorschlag bekomme ich leider einen Laufzeitfehler 5. Sowohl im realen Projekt wie in der Beispielmappe.
Was mache ich Wohl falsch? Kann dir gerne auch die Orginialdatei zukommen lassen.
AW: Lösungsvorschlag
06.08.2021 17:42:34
Beverly
Ändere mal diesen Teil ActiveSheet.ChartObjects("DiaVorlage") in ActiveSheet.ChartObjects(1)
Ich hatte das 1. Diagramm umbenannt in "DiaVorlage" und der Bezug darauf stimmt bei dir natürlich nicht. Aber durch die (1) wird nun generell das 1. Diagramm im Tabellenblatt angesprochen, gleichgültig wie es heißt.
Hinweis für das nächstemal: bitte nicht nur die Nummer des Laufzeitfehlers posten sondern auch den gesamten Text des Debuggers.

GrußformelBeverly's Excel - Inn
Anzeige
Erfolgreich
06.08.2021 20:50:20
Michael
Vielen lieben Dank!!!! Hat geklappt! Danke Tausend

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige