Anzeige
Archiv - Navigation
1584to1588
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

2D Array als Datenquelle für ein Punktdiagram

2D Array als Datenquelle für ein Punktdiagram
18.10.2017 16:48:36
Jonathan
Hallo zusammen,
ich schreibe Daten in ein 2D Array (5 Spalten mit ca. 30000 Zeilen), anschließend werden die Daten bearbeitet und sollen dann direkt als Datenquelle für ein Punktdiagramm dienen.
Aktuell werden die Daten immer in ein Datenblatt geschrieben und anschließend dem Diagramm zugeordnet.

i = 0
For Each graf In ActiveWorkbook.Worksheets("Dia_Arrhenius").ChartObjects
graf.Chart.SeriesCollection(1).XValues = wksDaten.Range("G5:G" & LZDaten)
graf.Chart.SeriesCollection(1).Values = wksDaten.Range(Cells(5, varDiagramme(1, i)),  _
Cells(LZDaten, varDiagramme(1, i)))
graf.Chart.SeriesCollection(1).Name = varDiagramme(0, i)
i = i + 1
Next graf

ist es möglich die Daten der y-Achse direkt aus dem Array auszulesen? Und wie mache ich das möglichst effizient?
Also idealerweise stelle ich mit etwas in der Art vor. Das Array in dem die Daten liegen sei varDaten(). Die Werte der x-Achse werden in varDaten(0,i) geschrieben und die Werte der ersten Datenreihe in varDaten(1,i).

With Worksheets("test").ChartObjects("test").Chart
.SeriesCollection(1).XValues = varDaten(0,0) - varDaten(0,100)
.SeriesCollection(1).Values = varDaten(1,0) - varDaten(1,100)
End With

Natürlich geht das mit dem - nicht aber hier hab ich bisher nichts gefunden...
ich hoffe Ihr könnt mir Helfen.
Viele Grüße
Jonathan

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 2D Array als Datenquelle für ein Punktdiagram
18.10.2017 17:56:38
ChrisL
Hi Jonathan
Ich denke das geht nur, wenn du zwei neue Array erstellst. Sinngemäss
For i = LBound(arAlt) To UBound(arAlt)
arNeu1(i) = arAlt(0, i)
arNeu2(i) = arAlt(1, i)
Next i
Nicht weiter schlimm, weil ein Array durchrattern geht schnell. Schöner wäre natürlich, wenn du bereits beim Einlesen splittest.
Array und Diagramm geht gemäss kurzer Recherche ab XL2007.
Hier fällt mir noch ein Referenzierungsfehler auf:
wksDaten.Range(wksDaten.Cells(5, varDiagramme(1, i)), wksDaten.Cells(LZDaten, varDiagramme(1, i)))
cu
Chris
Anzeige
AW: 2D Array als Datenquelle für ein Punktdiagram
19.10.2017 07:35:26
Jonathan
moin Chris,
vielen Dank für deine schnelle Antwort.
Das mit dem splitten von Array habe ich bereits versucht und es funktioniert teilweise. Die Punkte werden in das Diagramm geschrieben, allerdings erhalte ich die Fehlermeldung
"Der eingegebene Text ist zu lang. Reduzieren Sie die Anzahl der verwendeten Buchstaben oder brechen Sie die Eingabe ab.".
Mache ich noch einen Syntaxfehler oder ist die Anzahl der Punkte irgendwie limitiert?
Array splitten:

Dim varFeuchteA(), varFeuchteB(), varFeuchteC(), varFeuchteD(), varFeuchteE(), varFeuchteF() As  _
Double
For i = 0 To UBound(varFeuchte, 2) Step 1
ReDim Preserve varFeuchteA(i)
ReDim Preserve varFeuchteB(i)
ReDim Preserve varFeuchteC(i)
ReDim Preserve varFeuchteD(i)
ReDim Preserve varFeuchteE(i)
ReDim Preserve varFeuchteF(i)
varFeuchteA(i) = varFeuchte(0, i)
varFeuchteB(i) = varFeuchte(1, i)
varFeuchteC(i) = varFeuchte(2, i)
varFeuchteD(i) = varFeuchte(3, i)
varFeuchteE(i) = varFeuchte(4, i)
varFeuchteF(i) = varFeuchte(5, i)
Next

und Dann das neue 1 D Array der y-Achse zuordnen:
With Worksheets("test").ChartObjects("test").Chart
.SeriesCollection(1).XValues = wksDaten.Range("G5:G" & LetzteZeileDaten)
.SeriesCollection(1).Values = varFeuchteA
.SeriesCollection(1).Name = "
Also die Punkte werden in das Diagramm eingetragen, die Fehlermeldung tritt auf wenn ich das Diagramm oder genauer gesagt eine Datenreihe anklicke.
Ich habe auch einen Versuch mit namen gemacht, allerdings schaffe ich es weder dem Namen die richtigen Werte aus dem Array zuzuordnen noch dem Diagramm anschließend den Namen zuzuordnen :(
Viele Grüße
Jonathan
Anzeige
AW: 2D Array als Datenquelle für ein Punktdiagram
19.10.2017 08:52:07
ChrisL
Hi
Die Limitierungen müsste ich mir auch ergoogeln. Die Fehlermeldung ist eigentlich klar.
Wenn die Limitierung überschritten ist, dann hilft es auch nicht einen Namen zu definieren.
cu
Chris
AW: 2D Array als Datenquelle für ein Punktdiagram
19.10.2017 11:49:52
Jonathan
Hallo,
als Anmerkung zu meinem letzte Beitrag, es werden doch nicht alle Punkte im Diagramm dargestellt. Das Problem ist, dass wenn ich die Werte über
.SeriesCollection(3).Values = varFeuchteA

einlese, die Werte als Einzelwerte in der Form ={1,2,3,4,…,20000} eingelesen werden. Dadurch hat dieser Eintrag zu viele Zeichen und das wars.
Durch einen Namen werden die Werte aber anders eingelesen ='Dateiname'!Name
Das sind auf keinen Fall zu viele Zeichen und ss scheint zu funktionieren:
Namensdefinition

Dim nTest As Name
ActiveWorkbook.Names.Add Name:="nTest", RefersTo:=varFeuchteA

Im Diagramm
.SeriesCollection(1).Values = "'test.xlsm'!nTest"

Ich werde das jetzt nochmal genauer test.
Viele Grüße
Jonathan
Anzeige
AW: 2D Array als Datenquelle für ein Punktdiagram
19.10.2017 12:13:29
ChrisL
Hi Jonathan
Danke für die Rückmeldung.
Vielleicht gibt es doch einen Unterschied wenn du Namen definierst, aber so ganz leuchtet mir das trotzdem nicht ein ;)
Aber Hauptsache es funktioniert.
cu
Chris
AW: 2D Array als Datenquelle für ein Punktdiagram
19.10.2017 12:36:23
Jonathan
Hi Chris,
nein leider hast du recht, ist nicht wirklich ein Unterschied...
ich bekomme zwar keine Direkte Fehlmeldung aber es werden dennoch nicht alle Punkte gezeichnet und bei Beenden von Excel gibt es dann doch eine Fehlermeldung. Eine Formel weist wohl über 8000 Zeichen auf, das scheint der Name zu sein.
Naja sieht wohl so aus als muss ich die Werte doch in ein Tabellenblatt schreiben, auch wenn ich nicht ganz verstehe warum das nicht besser zu lösen ist :(
Falls jemand noch Ideen hat, immer her damit ;)
Grüße
Jonathan
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige