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

Scatterplot mit VBA

Scatterplot mit VBA
David
Hi zusammen
Ich probiere mir gerade einen Scatterplot mit VBA erstellen zu lassen. Eigentlich ist das Outcome ganz einfach:
Jede Row beinhaltet eine Serie. Jede Serie hat genau einen Wert auf der X und einen auf der Y-Achse. Somit hat jede Serie genau einen Punkt im Diagramm.
Ich habe mir bereits ein VBA Script aufgezeichnet und müsste noch ein paar Anpassungen vornehmen:
Sub Macro2()
Range("A1:C4").Select
Charts.Add
ActiveChart.ChartType = xlXYScatter
ActiveChart.SetSourceData Source:=Sheets("Sheet3").Range("A1:C4"), PlotBy:= _
xlRows
ActiveChart.SeriesCollection(1).XValues = "=Sheet3!R2C2"
ActiveChart.SeriesCollection(1).Values = "=Sheet3!R2C3"
ActiveChart.SeriesCollection(2).XValues = "=Sheet3!R3C2"
ActiveChart.SeriesCollection(2).Values = "=Sheet3!R3C3"
ActiveChart.SeriesCollection(3).XValues = "=Sheet3!R4C2"
ActiveChart.SeriesCollection(3).Values = "=Sheet3!R4C3"
ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet3"
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
End Sub

a.) die Range sollte unendlich sein (muss ich dann gar keine Range angeben?). Wählt dann Excel automatisch den Bereich so, dass nur bis zum Ende der Dateneinträgen ausgewählt wird?
b.) das VBA Script sollte durch soviele SeriesCollection durchlaufen, bis es am Ende angekommen ist. Also wenn ich z.B. 20 Rows habe mit Daten, sollte es 20 Serien generieren. Die Spalten sind ja immer eindeutig. Also:
SeriesCollection(X).XValues = "=Sheet3!R[X+1]C2"
SeriesCollection(X).Values = "=Sheet3!R[X+1]C3"
Ich kenne mich mit VBA nicht so gut aus. Ich würde etwas wie "IF has more series THEN continue with next series" "ELSE und dann das script weiterführen".
Ist das einfach zu bewerkstelligen?
Herzlichen Dank im Voraus und beste Grüsse,
David

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Scatterplot mit VBA
10.02.2011 03:12:38
fcs
Hallo David,
den Begriff "unendlich" sollte man in Excel vorsichtig verwenden.
Die Anzahl der Datenreihen in einem Diagramm ist begrenzt. Beim Testen unter Excel 2007 war bei 255 Schluss. Außerde solltest du dir zur Legende noch was einfallen lassen. Spätestens ab 10 bis 20 Datenreihen wird es unübersichtlich.
zu a) ohne Vorgabe eines Datenbereichs erstellt Excel kein bzw. ein leeres Diagramm.
zu b) Die erforderliche VBA-Syntax hab ich eingefügt.
Gruß
Franz
'Getestet unter Excel 2007
Sub ChartErzeugen_XY_Plot()
Dim Zeile As Long, lSeries As Long, oSeries As Series, oChart As Chart
Dim wks As Worksheet, rngChart As Range
Set wks = Worksheets("Sheet3") 'Tabellenblatt mit den Diagrammdaten
wks.Activate
With wks
'Zeile mit letztem Dateneintrag in Spalte B
Zeile = .Cells(.Rows.Count, 2).End(xlUp).Row
If Zeile > 255 Then
MsgBox "In einem XY-Diagramm können max. 255 Datenreihen dargestellt werden!"
Exit Sub
End If
'Datenbereich für Diagramm A1:Cxxx
Set rngChart = .Range(.Cells(1, 1), .Cells(Zeile, 3))
'      rngChart.Select
'Diagramm einfügen
Charts.Add
Set oChart = ActiveChart
oChart.ChartType = xlXYScatter
oChart.SetSourceData Source:=rngChart, PlotBy:=xlRows
'pro Zeile im Datenbereich eine Datenreihe anlegen
lSeries = 0
For Zeile = 2 To Zeile
lSeries = lSeries + 1
If lSeries > oChart.SeriesCollection.Count Then
oChart.SeriesCollection.NewSeries
End If
oChart.SeriesCollection(lSeries).XValues = "='" & .Name & "'!R" & Zeile & "C2"
oChart.SeriesCollection(lSeries).Values = "='" & .Name & "'!R" & Zeile & "C3"
Next
With oChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
.HasLegend = True
With .Legend
.Position = xlLegendPositionBottom
End With
End With
oChart.Location Where:=xlLocationAsObject, Name:=.Name
End With
End Sub

Anzeige
AW: Scatterplot mit VBA
10.02.2011 09:13:56
David
Hi Franz,
Super genial! Funktioniert bestens. Werde jetzt noch ein bisschen am Styling arbeiten.
Herzlichen Dank & Gruss,
David

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige