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

Diagramm in jedem Arbeitsblatt mit..

Diagramm in jedem Arbeitsblatt mit..
05.01.2018 10:53:36
Carsten
Hallo zusammen ich möchte Automatisiert Diagramme erstellen lassen in jedem Arbeitsblatt, dass dass den Namen "ims_*" hat. der Inhalt der je 4 Diagramme soll sein:
Der Inhalt der Spalte: "$I:$I" "$L:$L" "$Q:$Q" "$R:$R"
Und der Reihenname soll jeweils sein: I2, L2, Q2, R2
Userbild
So sieht das dann aus.
Das er alle Sheets macht geht schon gut, nur leider stimmt das mit den Daten nicht.
Sub AlleDiagramme()
Dim i As Long
For Each sh In ActiveWorkbook.Worksheets
sh.Activate
If sh.Name Like "ims_*" Then
Columns("I:I").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Range("ims_snapshots_" & Right(ActiveSheet.Name,  _
3) & "!$I:$I")
Columns("L:L").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Range("ims_snapshots_" & Right(ActiveSheet.Name,  _
3) & "!$L:$L")
Columns("Q:Q").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Range("ims_snapshots_" & Right(ActiveSheet.Name,  _
3) & "!$Q:$Q")
Columns("R:R").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Range("ims_snapshots_" & Right(ActiveSheet.Name,  _
3) & "!$R:$R")
End If
Next
Sheets("Auswahl").Select
End Sub
Leider macht er dann sowas:
Userbild
Da stimmt das Sheet, aber Reihenname und Werte sind vertauscht und bei Namen nimmte er 5001 statt 2.

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Diagramm in jedem Arbeitsblatt mit..
05.01.2018 10:59:39
Fennek
Hallo,
ungeprüft:
ersetze
For Each sh In ActiveWorkbook.Worksheets
sh.Activate
If sh.Name Like "ims_*" Then
mit
For Each sh In ActiveWorkbook.Worksheets
If sh.Name Like "ims_*" Then
with sh
Dann noch überall Punkte an der richtigen Stelle setzen ...
mfg
Wichtig: PlotBy:=xlColumns
05.01.2018 11:44:29
Beverly
Hi Carsten,
versuche es mal so:
Sub AlleDiagramme()
Dim wksTab As Worksheet
Dim lngLetzte As Long
Dim arrSpalten()
Dim bytZaehler As Byte
arrSpalten = Array(9, 12, 17, 18)
For Each wksTab In Worksheets
If Left(wksTab.Name, 4) = "ims_" Then
With wksTab
For bytZaehler = 0 To 3
lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, arrSpalten(bytZaehler))), _
.Cells(.Rows.Count, arrSpalten(bytZaehler)).End(xlUp).Row, .Rows.Count)
.Shapes.AddChart
With .ChartObjects(.ChartObjects.Count).Chart
.ChartType = xlLine
.SetSourceData Source:=wksTab.Range(wksTab.Cells(2, arrSpalten( _
bytZaehler)), _
wksTab.Cells(lngLetzte, arrSpalten(bytZaehler))), PlotBy:=xlColumns
End With
Next bytZaehler
End With
End If
Next wksTab
End Sub


Anzeige
AW: Wichtig: PlotBy:=xlColumns
05.01.2018 12:16:15
Carsten
Danke für eure Hilfe, also in der Zwischenzeit habe ich es selber hin bekommen mithilfe von:
ActiveChart.SeriesCollection(1).Values = "ims_snapshots_" & Right(ActiveSheet.Name, 3) & "!$R$1: _
$R$5000"
Und das selber für den Namen
Allerdings finde ich deine Lösung super Interessant geht auch schneller glaube ich.
Nur sind die Daten da genau so wie bei mir anfangs. Da müsste man vermutlich auch noch das reinbasteln, wie ich es gemacht habe.
Der Name ist auch immer Fix: also Spalte 9 = a Spalte 12 = b, 17=c, 18=d
Ginge dann nur um die Werte das man die mit .Value auf die Spalte des Wertes in der Array liste setzt.
Vlt bekomme ich es ja auch damit hin :D
Anzeige
AW: Wichtig: PlotBy:=xlColumns
05.01.2018 12:24:27
Carsten
Geschafft!!:)
Sub AlleDiagrammew()
Dim wksTab As Worksheet
Dim lngLetzte As Long
Dim arrSpalten()
Dim arrNamen()
Dim bytZaehler As Byte
arrSpalten = Array(9, 12, 17, 18)
arrNamen = Array("A", "B", "C", "D")
For Each wksTab In Worksheets
If Left(wksTab.Name, 4) = "ims_" Then
With wksTab
For bytZaehler = 0 To 3
lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, arrSpalten(bytZaehler))), . _
Cells(.Rows.Count, arrSpalten(bytZaehler)).End(xlUp).Row, .Rows.Count)
.Shapes.AddChart
With .ChartObjects(.ChartObjects.Count).Chart
.ChartType = xlLine
.SetSourceData Source:=wksTab.Range(wksTab.Cells(2, arrSpalten( _
bytZaehler)), wksTab.Cells(lngLetzte, arrSpalten(bytZaehler))), PlotBy:=xlColumns
.SeriesCollection(1).Values = wksTab.Range(wksTab.Cells(2, arrSpalten( _
bytZaehler)), wksTab.Cells(5000, arrSpalten(bytZaehler)))
.SeriesCollection(1).Name = arrNamen(bytZaehler)
End With
Next bytZaehler
End With
End If
Next wksTab
End Sub
PS: Bin Anfänger darum die Freude :P
Anzeige
Kann ich nicht nachvollziehen...
05.01.2018 12:25:11
Beverly
...bei mir werden die Daten richtig ins Diagramm übernommen: Reihenname aus Zeile 2 und die Daten selbst aus Zeile 3 bis zur letzten belegten Zeile der jeweiligen Spalte.
https://www.herber.de/bbs/user/118695.xlsm


AW: Kann ich nicht nachvollziehen...
05.01.2018 12:36:50
Carsten
Stimmt, da geht es. Komisch. Aber hat ja so geklappt. :)
Danke nochmals!:)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige