Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1092to1096
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

Array als Grundlage für Diagramm

Array als Grundlage für Diagramm
zink
Hallo,
ich berechne von 150 Produktgruppen Mittelwerte. Diese Mittelwerte speichere ich in einem Array und möchte dies grafisch als Stabdiagramm anzeigen *ohne* die enthaltenen Werte vorher in ein Tabellenblatt zu schreiben.
Mit Testdaten:
Dim myArray(1 To 150) As Variant
Dim i As Long
For i = 1 To 150
myArray(i) = i
Next i
Diagramm vorhanden, also
Worksheets("Sheet1").ChartObjects(1).Activate
ActiveChart.SeriesCollection(1).Values = myArray
Diese Zuweisung funktioniert bei mir nur, wenn nicht zu viele Werte in dem Array gespeichert sind (bis 81). Ich muss aber in der Realanwendung viel mehr Werte im Diagramm darstellen, im Testbeispiel Versuch mit 150.
Wenn bereits ein eingebettetes Diagramm vorhanden ist - wie muss man das Array zuweisen, damit die 150 Werte darin als Stabdiagramm angezeigt werden, ohne dass man das erst umständlich auf ein Tabellenblatt schreibt?
Danke für die Hilfe
Jo

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Array als Grundlage für Diagramm
07.08.2009 11:24:16
Rudi
Hallo,
ohne dass man das erst umständlich auf ein Tabellenblatt schreibt

was ist umständlich daran?
Gruß
Rudi
AW: Array als Grundlage für Diagramm
07.08.2009 11:36:56
zink
Die Werte können aus verschiedenen Gründen nicht auf ein Tabellenblatt geschrieben werden.
Das Beispiel wurde zum besseren Verständnis des Problems vereinfacht. In meiner realen Anwendung kommen sehr viel mehr Werte als 150 in das Array, das Array wird mit schnell einlaufenden Werten ständig neu errechnet, die Blätter sind verborgen (Attribut "veryhidden"), es gibt Change-Ereignisse mit vielen Seiteneffekten und, und, und ...
Neben Performance-Gründen sind es vor allem auch die Seiteneffekte, die ein ständiges Schreiben der Werte auf ein Tabellenblatt verbieten.
Grüße
Jo
Anzeige
AW: Array als Grundlage für Diagramm
07.08.2009 12:17:00
Daniel
Hi
das Problem ist, daß die Eigenschaft "ActiveChart.SeriesCollection(1).Values" ein String mit einer begrenzen Länge ist, die Grenze liegt bei c.a. 236 Zeichen.
das kannst du einfach mal ausprobieren, wenn du in dein Array nur einstellige Zahlen reinschreibst, dann funktionierts bis 117 Zahlen, füllst du dein Array mit dreistelligen Zahlen, ist bei 59 Schluss.
bei deiner Zahlenmenge wird es also nur darüber funktionieren, daß du die Zahlen in Tabellenblatt schreibst und dann in der Datendefiniton auf diesen Zellbereich verweist. Bei dieser Methode liegt das Limit bei 32.000 Datensätzen (für Excel XP)
Deine Bedenken hinsichtlich der Programmierung kann man vielleicht soweit ausräumen:
- Seiteneffekte durch Change-Events kann man mit der Option APPLICATION.ENABLEEVENTS = FALSE ausschalten. Solange diese Eigenschaft auf False steht, werden keine Event-Makros ausgeführt.
- Versteckte Seiten (auch "VeryHidden") lassen sich problemlos mit Excelmakros bearbeiten.
- Arrayinhalte lassen sich sehr schnell in Tabellenblätter schreiben, hier mal ein Beispiel, _ wie das für ein normales, eindimensonales Array beginnend mit dem Index 1 funktioniert:

Sheets(1).Range("A2").Resize(UBound(myArray), 1).Value = WorksheetFunction.Transpose(myArray)

Wichtig dabei ist, daß der Zellbereich genau so gross ist, wie das Array Elemente hat.
falls das trotzdem nicht funktioniert, wäre ein Workaround, daß du ein x-y-Punkte-Diagramm verwendest.
dann könntest du dein Array in kleinere Teile aufteilen, so daß die Datenmenge unter der kritischen Grenze bleibt und einfach mehrere Datenreihen anlegen. Wenn du diese gleich Formatierst, fällt das auch nicht auf.
du müsstest halt zusätzlich noch die x-Werte definieren, damit es im x-y-Diagramm funktioniert und die verschiedenen Datenreihen lückenlos aneinanderschließen.
Dies dürfe aber Programmtechnisch aufwendiger sein, als das Schreiben der Daten in ein Tabellenblatt.
Gruß, Daniel
Anzeige
AW: Array als Grundlage für Diagramm
08.08.2009 23:29:16
Josef
Hallo Jo,
erstelle zuerst eine Namen "data_".
Sub ArrayToChart()
  Dim lngIndex As Long
  Dim varValues(1 To 500) As Variant
  
  For lngIndex = LBound(varValues) To UBound(varValues)
    varValues(lngIndex) = lngIndex
  Next
  
  ThisWorkbook.Names("data_").RefersTo = varValues
  
End Sub

Und dem Diagramm weist du als Datenquelle den definierten Namen "data_" zu.
Userbild
Gruß Sepp

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige