Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1496to1500
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

Sekundärachse Punktdiagramm

Sekundärachse Punktdiagramm
08.06.2016 19:57:02
Anton
Hallo VBA-Profis,
ich versuche mich gerade mit einer For Schleife durch jedes Sheet zu arbeiten und dabei aus drei Datenreihen ein Punktdiagramm zu erstellen. Die dritte Datenreihe soll als Sekundärachse hinzugefügt werden. Folgenden Ansatz habe ich:
Sub DiagrammMitSekundaerachse ()
Dim wks As Worksheet
Dim lngZeileMax as Integer
Dim Dia As ChartObject
Dim rng As Range
For Each wks In ThisWorkbook.Sheets
With wks
If .Name  "UserForm" Then
lngZeileMax = .Range("C21").End(xlDown).Row - 1
For Each rng In .Range("C21:C" & lngZeileMax).Cells
If WorksheetFunction.IsText(rng) Then
rng.Value = Left(rng.Value, Len(rng.Value) - 2) * 1
End If
Next rng
.Range("D20").Value = "Umsatz2"
.Range("A20").Value = 0
.Range("C21:C" & lngZeileMax).Cells.Copy .Range("D21:D" &      lngZeileMax).Cells
On Error Resume Next
Set Dia = .ChartObjects.Add(300, 300, 500, 300)
Dia.Name = ActiveSheet.Name
i = .Range("D20").End(xlDown).Row - 1
.Range("A20:D" & i).Copy
.ChartObjects(Dia.Name).Activate
ActiveChart.SeriesCollection.Paste _
Rowcol:=xlColumns, SeriesLabels:=False, _
CategoryLabels:=True, Replace:=True, NewSeries:=True
Application.CutCopyMode = False
With ActiveChart.SeriesCollection(3)
.XValues = wks.Range(wks.Cells(A21, 1), wks.Cells(lngZeileMax, 1))
.Values = wks.Range(wks.Cells(D21, 4), wks.Cells(lngZeileMax, 4))
.AxisGroup = xlSecondary
End With
With ActiveChart
.ChartType = xlLineMarkers
.HasLegend = True
.HasTitle = True
.ChartTitle.Text = Dia.Name
End With
End If
End With
Next wks
End Sub
Leider tut sich nichts. Ist der Ansatz so ok? Vielleicht denke ich auch zu kompliziert :)
Danke für eure Hilfe.
VG Anton

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sekundärachse Punktdiagramm
09.06.2016 10:04:11
Beverly
Hi Anton,
lade deine Mappe hoch.


AW: Sekundärachse Punktdiagramm
09.06.2016 11:32:17
Anton
Hi Beverly,
danke für Deine Rückmeldung. Hier die Beispieldatei: https://www.herber.de/bbs/user/106112.txt
Formatursprung ist Macintosh, Trennzeichen ist Tabulator. Normalerweise importiere ich erst mehrere Files eines Ordners. Ich hoffe, eine Datei reicht erstmal als Beispiel. Die Schleife macht dann natürlich nur bedingt Sinn :)
Nur kurz zum Verständnis:
Nachdem Excel das importierte Format in der Spalte Umsatz C20 nicht richtig interpretiert, kürze ich erstmal zwei Zeichen von rechts und multipliziere mit eins. Um die Sekundärachse zu testen setze ich die Überschrift in D20 auf Umsatz2 und kopiere im Anschluss einfach die Werte ab C 20 in Spalte D ab D21.
Danke und VG,
Anton

Anzeige
AW: Sekundärachse Punktdiagramm
09.06.2016 12:06:19
Beverly
Hi Anton,
was soll man mit einer Text-Datei? Der Code läuft doch in einer Excel-Arbeitsmappe - oder irre ich mich?


AW: Sekundärachse Punktdiagramm
09.06.2016 13:49:05
Anton
Hi Beverly,
ich wollte Dir nur zeigen wie die zu bearbeitenden Text-Dateien aufgebaut sind. Die Excel-Arbeitsmappe mit dem Makro bekommst Du heute Abend von mir.
Lieben Dank schon mal.
VG Anton

AW: Sekundärachse Punktdiagramm
09.06.2016 20:48:52
Beverly
Hi Anton,
versuche es so:
For Each wks In ThisWorkbook.Worksheets
With wks
If .Name  "UserForm" Then
lngZeileMax = .Range("C21").End(xlDown).Row - 1
For Each rng In .Range("C21:C" & lngZeileMax).Cells
If WorksheetFunction.IsText(rng) Then
rng.Value = Left(rng.Value, Len(rng.Value) - 2) * 1
End If
Next rng
.Range("D20").Value = "Umsatz2"
.Range("A20").Value = 0
.Range("C21:C" & lngZeileMax).Cells.Copy .Range("D21:D" & lngZeileMax).Cells
'***** hier geändert Beginn
i = .Range("D20").End(xlDown).Row - 1
Set Dia = .ChartObjects.Add(300, 300, 500, 300)
Dia.Name = "KPIs"
With Dia.Chart
.ChartType = xlLineMarkers
.HasLegend = True
.HasTitle = True
.ChartTitle.Text = Dia.Name
.SetSourceData Source:=wks.Range("A20:D" & i), PlotBy:=xlColumns
.SeriesCollection(3).AxisGroup = 2
End With
'***** hier geändert Ende
Dim z As Integer
z = z + 1
wks.ChartObjects(Dia.Name).Chart.Location xlLocationAsNewSheet, Dia.Name & z
End If
End With
Next wks

Wenn du die Zeile On Error... weglässt, siehst du an welcher Stelle dein Code sein Problem hat.
Beachte bitte künftig, dass du den Code auskommentierst (oder löschst), der die Arbeitsmappe so verändert, dass man nichts mehr mit ihr anfangen kann - alle Tabellenblätter, auf die sich die Diagramme beziehen sollen,werden beim Öffnen gelöscht.


Anzeige
AW: Sekundärachse Punktdiagramm
09.06.2016 21:13:28
Anton
Hi Beverly,
klappt super! Danke für die Unterstützung und den Ratschlag.
Einen schönen Abend noch.
VG Anton

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige