ich habe leider noch keinerlei VBA Kenntnisse und eine Frage zu einem Makro von Franz, welcher in folgendem Beitag aus 2006 vorkommt:
Hallo,
ich habe folgendes Problem:
Ich möchte aus Datensätzen der Form
-------- Aktien Renten ...
Ertrag 18,76% 3,04% ...
Risiko 12,09% 1,58% ...
ein Punktdiagramm von einem Makro erstellen lassen. Die Anzahl der Datensätze ist variabel. An _
_
_
_
_
_
der X-Achse soll das Risiko, an der Y-Achse der Ertrag abgetragen werden. So soll ein _
Datenpunkt für die verschiedenen Anlageklassen entstehen.
Ich wäre sehr dankbar, wenn mir jemand helfen könnte, wie ich die Grafik am komfortabelsten _
erstellen kann.
Danke
Hallo Bautsch,
folgende Makros produzieren ein X-Y-Punkt-Diagramm, wobei jeder Punkt eine eigene Datenreihe _
darstellt. Im Makro DatenbereichDiagramm legst du den Datenbereich fest. Die Subroutine _
produziert dann das Diagramm.
Ich hoffe das hilft weiter
Gruß
Franz
Sub DatenbereichDiagramm()
Dim Daten As Range, wks As Worksheet
Set wks = ActiveSheet
Zeile = 1 ' Nummer der Zeile mit den Kategorien (Aktie, Renten etc)
Spalte = 1 ' Nummer der Spalte mit den Beschriftungen X-Y-Achse (Ertrag, Risiko)
With wks
Set Daten = .Range(.Cells(Zeile, Spalte), .Cells(Zeile + 2, .Cells(Zeile, .Columns.Count). _
_
_
_
_
_
End(xlToLeft).Column))
End With
Call XY_diagramm_mit_Reihe_je_Spalte(Daten, wks)
End Sub
Private Sub XY_diagramm_mit_Reihe_je_Spalte(Daten As Range, wks As Worksheet)
' Erzeugt aus Bereich Daten ein XY-Punktdiagramm mit einer Reihe pro Spalte
' Bereich Daten muss beinhalten:
' 1. Spalte Beschriftung für X- und Y-Achse)
' Spalten 2 bis X sind Datenreihen
' 1. Zeile Beschriftung Datenreihen
' 2. Zeile Y-Werte
' 3. Zeile X-Werte
Dim Reihe As Series
Charts.Add
ActiveChart.ApplyCustomType ChartType:=xlXYScatter
ActiveChart.Location Where:=xlLocationAsNewSheet 'auf neuem Blatt
' ActiveChart.Location Where:=xlLocationAsObject, Name:=wks.Name 'auf dem Tabellenblatt
With wks
ActiveChart.SetSourceData Source:=.Range(.Cells(Daten.Row + 1, Daten.Column), _
.Cells(Daten.Row + Daten.Rows.Count - 1, Daten.Column + 3)), PlotBy:=xlRows
End With
Application.ScreenUpdating = False
For i = ActiveChart.SeriesCollection.Count To 2 Step -1
ActiveChart.SeriesCollection(i).Delete
Next
For i = 1 To Daten.Rows.Count - 1
Set Reihe = ActiveChart.SeriesCollection(i)
With Reihe
.Name = "=" & wks.Name & "!R" & Daten.Row & "C" & Daten.Column + i
.XValues = "=" & wks.Name & "!R" & Daten.Row + 2 & "C" & Daten.Column + i
.Values = "=" & wks.Name & "!R" & Daten.Row + 1 & "C" & Daten.Column + i
.ApplyDataLabels ShowSeriesName:=True 'Rubrik wird am Datenpunkt angezeigt
End With
If i Daten.Rows.Count - 1 Then
ActiveChart.SeriesCollection.NewSeries
End If
Next
Application.ScreenUpdating = True
With ActiveChart
.HasLegend = False
.HasTitle = True
.ChartTitle.Characters.Text = InputBox("Diagrammtitel", "Neues Diagramm", "Rendite _
Anlageklassen")
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = InputBox("Beschriftung X-Achse: _
_
_
_
_
_
", "Neues Diagramm", Daten(3, 1))
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = InputBox("Beschriftung Y-Achse:", _
_
_
_
_
_
"Neues Diagramm", Daten(2, 1))
End With
End Sub
Ich habe die Daten folgender Maßen in das Sheet eingegeben:
A B C D
1 Katerogie1 Kategorie2 Kategorie3
2 Risiko 2 3 4
3 Ertrag 1% 2% 3%
Folgendes Problem: Ich weiß leider nicht, wie (bzw. wo genau) ich wie von Franz oben beschrieben den Datenbereich festlege. Wenn ich den Makro laufen lasse, erscheinen als Serie lediglich Kategorie 1 und Kategorie 2. Ich möchte den Datenbereich auf 3 Kategorien erweitern, sprich die Werte B2:D3.
Könnte mir hier jemand helfen?
Vielen Dank im Voraus!
Lars