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

Datenbereich in Makro festlegen

Datenbereich in Makro festlegen
11.03.2015 12:45:04
Lars
Hallo,
ich habe leider noch keinerlei Makrokenntnisse 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 Datenbereich festlege. Wenn ich den Makro laufen lasse, erscheinen als Serie lediglich Kategorie 1 und Kategorie 2., sprich A1:C3.
Könnte mir hier jemand helfen?
Vielen Dank im Voraus!
Lars

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

Betreff
Datum
Anwender
Anzeige
AW: Datenbereich in Makro festlegen
11.03.2015 14:48:17
Beverly
Hi Lars,
willst du ein Punkt(XY)-Diagramm erstellen oder ein Liniendiagramm? Welche Daten sollen als X- und welche als Y-Werte verwendet werden?


AW: Datenbereich in Makro festlegen
11.03.2015 15:33:44
Lars
Hi Karin,
es soll ein X-Y Diagramm erstellt werden. Die X-Werte stehen in Zeile 3 ("Ertrag")und die Y-Werte in Zeile 2 ("Risiko"). Komischer Weise wäre es für mich anders herum logischer, aber Franz hatte den Makro wohl so erstellt, dass X-Werte eben in Zeile 3 und Y-Werte in Zeile 2 stehen.
Ich habe die Datei mal zur Info angehängt.
Vielen Dank bis hierhin!
Lars

Anzeige
AW: Datenbereich in Makro festlegen
11.03.2015 15:57:49
Beverly
Hi Lars,
ich würde es vielleicht so lösen:
Sub DiaErstellen()
Dim lngZeile As Long
Dim intSpalte As Integer
lngZeile = ActiveSheet.Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:= _
xlPrevious).Row - 1
intSpalte = ActiveSheet.Cells.Find(What:="*", SearchOrder:=xlByColumns, SearchDirection:= _
xlPrevious).Column + 1
With ActiveSheet.Shapes.AddChart(0, 0, 0, 0)
.Top = 50
.Left = 50
.Width = 450
.Height = 350
With .Chart
.ChartType = xlXYScatterLines
.SetSourceData Source:=Cells(lngZeile, intSpalte)
With .SeriesCollection.NewSeries
.XValues = Range("B3:D3")
.Values = Range("B2:D2")
End With
End With
End With
End Sub


Anzeige
AW: Datenbereich in Makro festlegen
12.03.2015 14:42:52
Lars
Hi Karin,
mein Ziel war es, für jede einzelne Kategorie (1-x) eine eigene Serie zu haben, damit diese durch eine Legende zu unterscheiden sind, bzw. ich nicht bei jedem Update den jeweiligen Namen der Kategorie zum zugehörigen Datenpunkt per Textbox einfügen muss. Deshalb ist Franks Makro so praktisch, bzw. wohl auch dementsprechend umfangreicher.
Dennoch vielen Dank!
VG
Lars

AW: Datenbereich in Makro festlegen
12.03.2015 15:08:50
Beverly
Hi Lars,
das ist auch kein Problem:
Sub DiaErstellen()
Dim lngZeile As Long
Dim intSpalte As Integer
lngZeile = ActiveSheet.Cells.Find(What:="*", SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row - 1
intSpalte = ActiveSheet.Cells.Find(What:="*", SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column + 1
With ActiveSheet.Shapes.AddChart(0, 0, 0, 0)
.Top = 50
.Left = 50
.Width = 450
.Height = 350
With .Chart
.ChartType = xlXYScatterLines
.SetSourceData Source:=Cells(lngZeile, intSpalte)
For intSpalte = 2 To 4
With .SeriesCollection.NewSeries
.XValues = Cells(3, intSpalte)
.Values = Cells(2, intSpalte)
.Name = Cells(1, intSpalte)
.ApplyDataLabels
.DataLabels.ShowValue = False
.DataLabels.ShowSeriesName = True
End With
Next intSpalte
End With
End With
End Sub


Anzeige
AW: Datenbereich in Makro festlegen
12.03.2015 15:23:07
Lars
Wow klasse, vielen Dank!

AW: Datenbereich in Makro festlegen
11.03.2015 15:52:32
Lars
Hi Karin,
nochmal genauer:
X-Werte: B3:D3
Y-Werte: B2:D2
Spalte D (und alles danach) wird im Diagramm nicht angezeigt, sprich nur Katergorie 1 und 2.
Leider konnte ich die Datei nicht anängen.
Danke.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige