Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Oberflächendiagramm y-Achse erstellen
16.05.2013 10:40:49
Ann
Hallo,
vielleicht könnt ihr mir bei meinem Problem helfen.
Und zwar will ich ein Oberflächendiagramm über diese Tabelle erstellen:
2 2,5 3 3,5 4 4,5
400 2300 2400 2500 2600 2600 2600
350 1884 2058 2000 2000 2100 2100
300 1726 1800 1779 1589 1600 1700
250 1421 1421 1400 1400 1300 1200
200 1200 1221 1158 1068 889,5 900
In der x-Achse sollen die Werte A2 bis A6 stehen, in y B1 bis G1 und in z B2:G6 (es können theoretisch noch weitere Zeile und Spalten hinzukommen).
Mein Entwurf sieht jetzt so aus:
Dim objCh As Chart
Sheets(7).ChartObjects.Add Left:=600, Top:=90, Width:=400, Height:=225
Set objCh = Sheets(7).ChartObjects(1).Chart
With objCh
.HasTitle = True
.ChartTitle.Characters.Text = "Titel"
.SetSourceData Source:=Sheets(7).Range(Sheets(7).Cells(2, 2), Sheets(7).Cells(l, k))
.ChartType = xlSurface
End With
Dim xAxis As Axis
Dim yAxis As Axis
Set xAxis = objCh.Axes(xlCategory)
With xAxis
.HasTitle = True
.AxisTitle.Text = "xTitel"
.CategoryNames = Sheets(7).Range(Sheets(7).Cells(1, 2), Sheets(7).Cells(1, l)) ', PlotBy:=xlRows
End With
Set xAxis = Nothing
Set yAxis = objCh.Axes(xlSeriesAxis)
With yAxis
.HasTitle = True
.AxisTitle.Text = "yTitel"
.SeriesAxisNames = Sheets(7).Range("A2:A" & k)
End With
Set yAxis = Nothing
Mein Problem ist jetzt, dass er mir in der y-Achse nur 3 Datenreihen angibt... ich denkt mal, dass ".SeriesAxisNames falsch ist", finde aber nirgends den richtigen Befehl.
Danke für die Hilfe!
Gruß, Ann

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Oberflächendiagramm y-Achse erstellen
16.05.2013 16:49:07
Flock
Hi Ann,
setz in den Block With yAxis noch die Zeile
.TickLabelSpacing = 1
das sollte helfen. Die Defaulteinstellung automatisiert die Anzahl der dargestellten Datenreihenbeschriftungen anhand der verfügbaren Plotarea und der Schriftgröße.
Gruß Flock

AW: Oberflächendiagramm y-Achse erstellen
16.05.2013 16:58:28
Ann
Hi Flock,
danke für die Anwort, aber ich bekomm immer noch den Laufzeitfehler '438':Objekt unterstützt diese Eigenschaft oder Methode nicht
und zwar bei der Zeile .SeriesAxisNames = Sheets(7).Range("A2:A" & k)

AW: Oberflächendiagramm y-Achse erstellen
16.05.2013 18:14:58
Flock
Hi Ann,
von einem Laufzeitfehler hattest du vorher nichts erwähnt, drum hab ich mir das nicht näher angeschaut:
eine Anweisung "SeriesAxisNames" kenne ich nicht. Ich denke du musst die Beschriftung deiner yReihen einzeln über Seriescollection().name ansprechen. Folgender Code funktioniert bei mir:
Am Codeanfang noch einen Zähler (falls du nicht schon irgendwo einen greifbar hast):
dim ctr as integer
Dann in deinem yAxis-Block
.......
With chobj
For ctr = 1 To .SeriesCollection.Count
.SeriesCollection(ctr).Name = sheets(7).cells(1+ ctr,1)
Next ctr
end with
.....
Das TickLabelSpacing solltest du natürlich immer noch einsetzen.
Gruß Flock

Anzeige
AW: Oberflächendiagramm y-Achse erstellen
16.05.2013 18:33:43
Beverly
Hi Ann,
also wenn ich das richtig sehe, dann würden bei diesem Tabellenaufbau in A2:A6 die X-Werte (Horizontalachse, von links nach rechts), in B1:G1 die Z-Werte (Tiefenachse, von vorn nach hinten) und in B2:G6 die Y-Werte (Vertikalachse) stehen und nicht wie du es beschrieben hast.


AW: Oberflächendiagramm y-Achse erstellen
17.05.2013 11:49:11
Ann
Danke für eure Antworten! Ich werds mir nächste Woche mal ansehen

AW: Oberflächendiagramm y-Achse erstellen
21.05.2013 17:15:42
Ann
Hallo,
also zu deiner Anwort Karin:
Horizontalachse: B1:G1
Tiefenachse: A2:A6
Vertikalachse: B2:G6
Mit meinem Code bekomm ich zwar ein korrektes Diagramm, aber in der Tiefenachse steht Diagrammreihe 1 bis Diagrammreihe 5 anstatt den Werten in der Spalte (400, 350, ... , 200) :(
Dim objCh As Chart
Sheets(7).ChartObjects.Add Left:=600, Top:=90, Width:=400, Height:=225
Set objCh = Sheets(7).ChartObjects(1).Chart
With objCh
.HasTitle = True
.ChartTitle.Characters.Text = "n_exp"
.SetSourceData Source:=Sheets(7).Range(Sheets(7).Cells(2, 2), Sheets(7).Cells(Zeile, Spalte))
.ChartType = xlSurface
End With
Dim xAxis As Axis
Dim yAxis As Axis
Set xAxis = objCh.Axes(xlCategory)
With xAxis
.HasTitle = True
.AxisTitle.Text = "p_Kond"
.CategoryNames = Sheets(7).Range(Sheets(7).Cells(1, 2), Sheets(7).Cells(1, Spalte))
End With
Set xAxis = Nothing
Set yAxis = objCh.Axes(xlSeriesAxis)
With yAxis
.TickLabelSpacing = 1
.HasTitle = True
.AxisTitle.Text = "Q_dot_tot"
.CategoryNames = Sheets(7).Range(Sheets(7).Cells(2, 1), Sheets(7).Cells(2, Zeile))
End With
Set yAxis = Nothing
Danke für eure Hilfe!

Anzeige
AW: Oberflächendiagramm y-Achse erstellen
22.05.2013 00:22:31
Flock
Hallo Ann,
für die Tiefenachse (= die Datenreihen) gibt es die 'CategoryNames'-Eigenschaft nicht. Die Datenreihennamen müssen mit 'seriescollection(x).name' festgelegt werden.
Ersetze
.....
.AxisTitle.Text = "Q_dot_tot"
.CategoryNames = Sheets(7).Range(Sheets(7).Cells(2, 1), Sheets(7).Cells(2, Zeile))
End With
Set yAxis = Nothing
....
durch
....
Dim x as long
.AxisTitle.Text = "Q_dot_tot"
End With
Set yAxis = Nothing
With objCh
For x = 1 To .SeriesCollection.Count
.SeriesCollection(x).Name = Sheets(1).Cells(x + 1, 1)
Next x
End With
.......
Schönen Gruß
Flock

Anzeige
AW: Oberflächendiagramm y-Achse erstellen
22.05.2013 00:40:23
Flock
Hallo Ann,
Sorry, natürlich
.SeriesCollection(x).Name = Sheets(7).Cells(x + 1, 1)

statt
.SeriesCollection(x).Name = Sheets(1).Cells(x + 1, 1)
Gruss
Flock

AW: Oberflächendiagramm y-Achse erstellen
22.05.2013 10:56:02
Ann
Hey Flock,
vielen Dank!!!

Danke für die Rückmeldung - oT
22.05.2013 12:31:22
Flock
.

Danke für die Rückmeldung - oT
22.05.2013 12:31:55
Flock
-

AW: Oberflächendiagramm y-Achse erstellen
22.05.2013 12:51:09
Beverly
Hi Ann,
leider komme ich erst jetzt dazu, dir zu antworten. Das mag zwar wie eine Ausrede klingen, entspricht aber (leider) der Wahrheit: bei uns war seit gestern Abend bis jetzt immer wieder für mehrere Stunde der Strom weg und jedes mal meine vorbereitete Testdatei damit ebenfalls. Du hast zwar inzwischen eine Lösung, aber ausgehend von deinem Code würde ich dir noch zusätzlich vorschlagen, auf alle Set-Variabln zu verzichten, denn sie sind hier nicht notwendig:
Sub Diagramm()
Dim Zeile As Long
Dim Spalte As Integer
Zeile = 6
Spalte = 7
With Sheets(7).ChartObjects.Add(Left:=600, Top:=90, Width:=400, Height:=225).Chart
.HasTitle = True
.ChartTitle.Characters.Text = "n_exp"
.SetSourceData Source:=Sheets(7).Range(Sheets(7).Cells(2, 2), Sheets(7).Cells(Zeile,  _
Spalte))
.ChartType = xlSurface
With .Axes(xlCategory)
.HasTitle = True
.AxisTitle.Text = "p_Kond"
.CategoryNames = Sheets(7).Range(Sheets(7).Cells(1, 2), Sheets(7).Cells(1, Spalte))
End With
With .Axes(xlSeriesAxis)
.TickLabelSpacing = 1
.HasTitle = True
.AxisTitle.Text = "Q_dot_tot"
End With
For Zeile = 1 To .SeriesCollection.Count
.SeriesCollection(Zeile).Name = Sheets(7).Cells(Zeile + 1, 1)
Next Zeile
End With
End Sub


Anzeige
AW: Oberflächendiagramm y-Achse erstellen
27.05.2013 15:10:33
Ann
Hey Karin,
kein Problem! Du siehst ja, ich bin mit meiner Antwort auch spät dran... dachte es kommt nichts mehr ;)
Jedenfalls, danke für den Tipp!

318 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige