Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
824to828
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
824to828
824to828
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Aus einer Tabelle einzelne Diagramme erstellen
05.12.2006 11:57:55
Ralph
Hallo liebe Profis,
ich habe habe ein kleines Problem. Ich möchte aus den Werten einer Tabelle Diagramme erstellen. Für jeden Rohstoff soll ein Tabellenblatt erstellt werden.
In meinem Beispiel habe ich die Tabelle manuell erstellt und möchte ich jetzt gern automatisch durchführen.
Die Bezeichnung im Register sollte der Rohstoff-Nr. in der Tabelle entsprechen.
Sonst soll das Diagramm wie im Beispiel aussehen.
Zusatzwunsch: Wenn möglich hätte ich auch den letzten Einkaufspreis als Fixpunkt im Diagramm!
https://www.herber.de/bbs/user/38742.xls
Weiß jemand ob und wie das möglich ist?
Viele Grüße Ralph

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aus einer Tabelle einzelne Diagramme erstellen
05.12.2006 13:47:27
ChrisL
Hallo Ralph
Sub DiagrammErzeugen()
Dim WS As Worksheet
Dim iZeile As Long
Dim StartZeile As Long, StopZeile As Long
Set WS = Worksheets("Tabelle1")
With WS
For iZeile = 2 To .Range("A65536").End(xlUp).Row
If .Cells(iZeile, 3) .Cells(iZeile - 1, 3) Then StartZeile = iZeile
If .Cells(iZeile, 3) .Cells(iZeile + 1, 3) Then
StopZeile = iZeile
Call MakeChart(WS, StartZeile, StopZeile)
End If
Next iZeile
End With
End Sub

Private Sub MakeChart(WS As Worksheet, StartZeile As Long, StopZeile As Long)
Dim ch As Chart
With WS
Set ch = Charts.Add
ch.Move After:=Sheets(Sheets.Count)
ch.Name = .Cells(StartZeile, 2) & " " & .Cells(StartZeile, 3)
ch.SetSourceData Source:=.Range(.Cells(StartZeile, 4), .Cells(StopZeile, 4))
ch.SeriesCollection(1).XValues = "=" & WS.Name & "!R" & StartZeile & "C1:R" & StopZeile & "C1"
ch.SeriesCollection(1).Name = "=" & WS.Name & "!R" & StartZeile & "C2:R" & StartZeile & "C3"
ch.SeriesCollection.NewSeries
ch.SeriesCollection(2).Values = "=" & WS.Name & "!R" & StartZeile & "C5"
ActiveChart.SeriesCollection(2).Name = "=" & WS.Name & "!R1C5"
ch.Location Where:=xlLocationAsNewSheet
ch.ApplyDataLabels Type:=xlDataLabelsShowValue, LegendKey:=False
ch.ChartType = xlLineMarkers
End With
End Sub

Das erste Diagramm wird bei mir falsch erstellt. Ich bin noch nicht hinter den Fehler gekommen. Vielleicht kannst du damit leben, weil alle anderen Diagramme sind richtig (musst also nur 1 Diagramm manuell korrigieren).
Falls dies ein Problem darstellt, bitte ich dich den Beitrag als offen zu kennzeichnen, da ich selber keine Idee betr. Ursache habe (alle Diagramme werden mit dem gleichen Code erzeugt, aber nur eines ist falsch). Sorry.
Gruss
Chris
Anzeige
AW: Aus einer Tabelle einzelne Diagramme erstellen
Ralph
Hallo Chris,
zunächst eimal vielen Dank für deine Hilfe.
Ich habe das Makro in meinem Beispiel getestet und finde das wirklich super!
In meiner Original Tabelle läuft das Makro allerdings nicht ich bin auf der Suche nach dem Fehler!
Gruß Ralph
AW: Aus einer Tabelle einzelne Diagramme erstellen
05.12.2006 15:38:22
fcs
Hallo Ralph,
ich hatte mir auch schon ein paar Gedanken zur Lösung gemacht.
Habe einen etwas anderen Weg als Chris gewählt.
Lege in der Datei ein Diagramm als Muster an, Registername: MusterDiag. In diesem Diagramm muss du auch eine Datenreihe für den Letzten Einkaufspreis anlegen, wobei du für die Werte nur eine einzelne Zelle angibst.
Mein Makro kopiert dann dieses Muster für jede Roh.-Nr. und erstzt die Daten für die Datenreihen und den Diagramm-Titel.
Der Vorteil, du kannst das Diagramm speziell nach deinen Wünschen formatieren. In jeder Kopie bleiben die Formatierungen erhalten, und du bist nicht auf die Standardformatierungen von Excel begrenzt.
Das Problem bei Chris-Vorschlag könnte sein, dass in deinem Original der Name der Tabelle mit den Daten Sonderzeichen wie z.B. Leerzeichen, Punkte etc. enthält. Dann müssen die Tabellennamen für die Datenbereiche in Hochkomma gesetzt werden. Die CodeZeilen müßten dann entsprechend angepaßt werden.
Deine Datei mit Code: https://www.herber.de/bbs/user/38747.xls
Gruß
Franz

Sub DiagrammeErzeugen()
' DiagrammeErzeugen Makro
' Diagramme erzeugen pro Roh-Nr.
Dim wks As Worksheet, Diag As Chart, ZeileA As Long, ZeileE As Long, Zeile As Long
Set wks = ActiveWorkbook.Worksheets("Tabelle1") 'Tabellenblatt mit Daten
ZeileA = 2 '1. Zeile mit DiagrammDaten
Application.ScreenUpdating = False
With wks
For Zeile = ZeileA To .Cells(.Rows.Count, 2).End(xlUp).Row
'LetzteZeile zur Roh-Nr bestimmen
Do Until .Cells(Zeile + 1, 2) <> .Cells(ZeileA, 2)
Zeile = Zeile + 1
Loop
ZeileE = Zeile
Sheets("MusterDiag").Copy After:=Sheets(ActiveWorkbook.Sheets.Count)
Set Diag = ActiveChart
With Diag
'DatenReihe für Durchschnittspreis setzen
.SeriesCollection(1).XValues = "='" & wks.Name & "'!R" & ZeileA & "C1:R" & ZeileE & "C1"
.SeriesCollection(1).Values = "='" & wks.Name & "'!R" & ZeileA & "C4:R" & ZeileE & "C4"
.SeriesCollection(1).Name = "='" & wks.Name & "'!R" & ZeileA & "C2:R" & ZeileA & "C3"
'DatenReihe für Letzten Einkaufspreis  setzen
.SeriesCollection(2).Values = "='" & wks.Name & "'!R" & ZeileA & "C5"
'Diagrammtitel einfügen
.HasTitle = True
.ChartTitle.Characters.Text = wks.Cells(ZeileA, 2) & " " & wks.Cells(ZeileA, 3)
.Deselect
End With
'Registernamen = Roh-Nr. setzen
Diag.Name = .Cells(ZeileA, 2)
ZeileA = ZeileE + 1 'Anfangszeile fürs nächste Diagramm setzen
Next Zeile
End With
Application.ScreenUpdating = False
End Sub

Anzeige

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige