Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1824to1828
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
Diagramme auf einer Seite
13.04.2021 12:47:32
Tom
Hallo zusammen,
ich habe auf dieser tollen Seite ein Tool gefunden, dass so ziemlich meinen Anforderungen entspricht.
Ich würde aber gerne erreichen, dass die ausgegebenen Diagramme in einem neuen Tabellenblatt alle auf einer Seite dargestellt werden.
Ist dies möglich? Mein VBA ist dafür leider zu dünn ...
https://www.herber.de/bbs/user/145489.xls
Danke vorab
TOM

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Diagramme auf einer Seite
13.04.2021 16:23:48
Beverly
Hi Tom,
z.B. so:
Sub GrafikenErstellen()
Dim wks As Worksheet
Dim cht As ChartObject
Dim iRow As Integer
Dim dblChart As Double
Set wks = ActiveSheet
iRow = 3
Do Until IsEmpty(wks.Cells(iRow, 1))
Set cht = Worksheets("Tabelle2").ChartObjects.Add(0, 0, 300, 200) '

AW: Diagramme auf einer Seite
13.04.2021 18:55:29
Tom
Hallo Beverly,
ÜBERRAGEND :-) Vielen Dank
Kleine Zusatzfrage:
Wo paßt Du die Größe der Diagramme an?
Danke vielmals
TOM
AW: Diagramme auf einer Seite
13.04.2021 19:47:01
Beverly
Hi Tom,
in dieser Zeile
Set cht = Worksheets("Tabelle2").ChartObjects.Add(0, 0, 300, 200)

wird das Diagramm erstellt, wobei die Werte die folgenden sind: .ChartObjects.Add(Position Links, Position Oben, Breite, Höhe)
Und mit folgendem Code wird das erstellte Diagramm positioniert:
       With cht
.Top = dblChart    '

D.h., jedes Diagramm wird erst mit Position Oben = 0 erstellt und dann unter das jeweilis vorghergehende verschoben.
Theoretisch könnte man jedes neue Diagramm gleich mit der "richtigen" Position Oben erstellen/positionieren, aber häufig schafft die Grafik-Engin von Excel es nicht, die Position korrekt zuzuweisen - deshalb ist der Umweg wie im obigen Code der bessere Weg.

GrußformelBeverly's Excel - Inn
Anzeige
AW: Diagramme auf einer Seite
14.04.2021 08:45:33
Tom
Hallo Karin,
danke. Super erklärt. :-)
Ist es bei dieser Auswertung auch möglich, eine "Norm-Linie" (Toleranzbereich) wie eine Art Benchmark einzufügen? Habe mal zwei Spalten hinzugefügt.
https://www.herber.de/bbs/user/145504.xls
Wäre schön wenn Du nochmal drüber schauen könntest. Danke
Viele Grüße
TOM
AW: Diagramme auf einer Seite
14.04.2021 09:48:33
Tom
Zusatzfrage:
Ist es möglich die Werte in kleinerer Schrift auf den Säulen darstellen zu lassen
Danke
AW: Diagramme auf einer Seite
14.04.2021 09:49:43
Tom
Zusatzfrage:
Ist es möglich die Werte in kleinerer Schrift auf den Säulen zu platzieren?
Danke
Gruß
TOM
Anzeige
AW: Diagramme auf einer Seite
14.04.2021 15:55:10
Beverly
Hi Tom,
ich hoffe der folgende Code entspricht deinen Vorstellungen:
Sub GrafikenErstellen()
Dim wks As Worksheet
Dim cht As ChartObject
Dim iRow As Integer
Dim dblChart As Double
Dim lngAnzahl As Long
Dim lngZaehler As Long
Dim strMin As String
Dim strMax As String
Set wks = Worksheets("Tabelle1")
iRow = 3
Do Until IsEmpty(wks.Cells(iRow, 1))
Set cht = Worksheets("Tabelle2").ChartObjects.Add(0, 0, 300, 200)
With cht.Chart
.ChartType = xlColumnClustered
.SetSourceData Source:=wks.Range( _
wks.Cells(iRow, 1), wks.Cells(iRow, 13)), PlotBy:=xlRows
.HasTitle = True
.ChartTitle.Characters.Text = wks.Cells(iRow, 1).Value
' Datenbeschriftung hibzufügen und Schriftgröße 8 zuweisen
With .SeriesCollection(1)
.ApplyDataLabels
.DataLabels.Format.TextFrame2.TextRange.Font.Size = 8
End With
lngAnzahl = .SeriesCollection(1).Points.Count - 1
' Min und Max aus der betreffenden Spalte zusammensetzen
strMin = "=(Tabelle1!" & Cells(iRow, 2).Address & ","
strMax = "=(Tabelle1!" & Cells(iRow, 3).Address & ","
For lngZaehler = 1 To lngAnzahl
strMin = strMin & "Tabelle1!" & Cells(iRow, 2).Address & ","
strMax = strMax & "Tabelle1!" & Cells(iRow, 3).Address & ","
Next lngZaehler
strMin = Left(strMin, Len(strMin) - 1) & ")"
strMax = Left(strMax, Len(strMax) - 1) & ")"
' neue Datenreihe erstellen, Typ Punkte mit geraden Linien
' Name "Minimum", zusammengesetzte Y-Werte zuweisen, Linienfarbe Rot
With .SeriesCollection.NewSeries
.ChartType = xlXYScatterLinesNoMarkers
.Name = "Minimum"
.Values = strMin
.Format.Line.ForeColor.RGB = RGB(255, 0, 0)
End With
' neue Datenreihe erstellen, Typ Punkte mit geraden Linien
' Name "Maximum", zusammengesetzte Y-Werte zuweisen, Linienfarbe Grün
With .SeriesCollection.NewSeries
.ChartType = xlXYScatterLinesNoMarkers
.Name = "Maximum"
.Values = strMax
.Format.Line.ForeColor.RGB = RGB(0, 176, 80)
End With
End With
With cht
.Top = dblChart
dblChart = dblChart + 200
End With
iRow = iRow + 1
Loop
End Sub

Als Minimum und Maximum werden 2 extra Datenereihen verwendet. Dazu werden die Y-Werte aus der Zelladresse der Spalte B bzw. C so oft zusammengesetzt wie Datenpunkte in der Säulen-Datenreihe vorhanden sind.

GrußformelBeverly's Excel - Inn
Anzeige
AW: Diagramme auf einer Seite
15.04.2021 12:44:35
Tom
Hallo Karin,
was soll ich sagen? Ich bin sprachlos ... Chapeau! Vielen vielen Dank für Deine Unterstützung!
Ich habe aber zwei letzte Abschlussfragen zum Verständnis:
In welchem Teil des Codes wird die Diagrammart bestimmt (kann man variabel auch mal auf ein Liniendiagramm wechseln?)
In der X-Achse wird derzeit der Zahlenstrahl 1- ... angegeben. Ist es möglich auch das Datum der Werte dort zu übernehmen?
Viele Grüße
TOM
Diagrammtyp zuweisen VBA
15.04.2021 14:23:20
Beverly
Hi Tom,
hier wird dem Diagramm der Typ Gruppierte Säulen zugewiesen (Typ kann man entsprechend anpassen - einfach mit dem Makrorecorder aufzeichnen):

With cht.Chart
.ChartType = xlColumnClustered

und in dieser Zeile der neu hinzugefügten Datenreihe der Typ Punkt

With .SeriesCollection.NewSeries
.ChartType = xlXYScatterLinesNoMarkers

In deinem Ursprungscode wurde das Diagramm ohne definierte Beschriftung der Horizontalachse erstellt, deshalb zeigt es automatisch die Werte 1 bis xxx an, je nachdem wieviele Datenpunkte (Säulen) das Diagramm umfasst. Soll eine bestimmte Beschriftung erfolgen, muss man die Achsenbeschriftung explizit zuweisen. Dazu gibt es generell verschiedene Möglichkeiten, in deinem Fall jedoch ist es am einfachsten, der zuerst erstellten Datenreihe auch den X-Wertebereich zuzuweisen:

With cht.Chart
.ChartType = xlColumnClustered
.SetSourceData Source:=wks.Range( _
wks.Cells(iRow, 4), wks.Cells(iRow, 13)), PlotBy:=xlRows  '

Und noch etwas: da durch das Einfügen der Spalten Min und Max die Diagrmamwerte erst ab Spalte D beginnen, muss dies beim Erstellen des Diagramms ebenfalls berücksichtigt werden - habe ich im Code noch entsprechend angepasst.

GrußformelBeverly's Excel - Inn
Anzeige
Min/Max-Linie im Diagramm
14.04.2021 10:07:20
Beverly
Hi Tom,
sehe ich das richtig: der Min- und der Max-Wert soll für jedes Diagramm derselbe sein?

GrußformelBeverly's Excel - Inn
AW: Min/Max-Linie im Diagramm
14.04.2021 10:10:30
Tom
Nein, sorry das habe ich falsch eingetragen durch runterkopieren... Sollten verschieden sein

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige