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

Bubblechart mit VBA generieren/ändern

Bubblechart mit VBA generieren/ändern
18.04.2020 22:15:41
Wolfgang
Hallo Forum,
ich habe für eine bestimmte Auswertung ein bubble-chart generiert.
Entgegen dem Excel-Standard entspricht jede Zeile einer bubble.
Diese Auswertung erfolgt regelmäßig.
Folgendes ist meine Herausforderung:
- Jede Auswertung kann eine unterschiedliche Anzahl von Zeilen enthalten, damit ändert sich die Anzahl der Datenpunkte.
- Ich möchte bei jeder Aktualisierung die bestehenden Datenpunkte entfernen und durch die neuen Datenpunkte ersetzen.
Meine Fragen:
1. Wie lösche und wie generiere ich die einzelnen Datenpunkte? Etwas wie Points.create habe ich nicht gefunden
2. Wie spreche ich jeden einzelnen Datenpunkt an, um den Namen, den x-Wert, den y-Wert und die Blasengröße zu bestimmen?
3. Wie kann ich dem Datenpunkt eine Farbe zuweisen?
Herzlichen Dank für den Support.

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Bitte Beispielappe mit Daten hochladen - o.T.
19.04.2020 09:27:32
Beverly


Lösungsvorschlag
19.04.2020 18:37:44
Beverly
Hi Wolfgang,
der Code würde dann so aussehen:
Sub DiaErstellen()
Dim lngZeile As Long
With ActiveSheet.Shapes.AddChart2(269, xlBubble).Chart
For lngZeile = 4 To 7 '


AW: Lösungsvorschlag
19.04.2020 19:28:56
volti
Hi,
und noch eine kleine Ergänzung zu Karin's Vorschlag, falls Du noch die Bubble-Farben setzen möchtest.
Abweichende Umrandungsfarben für alternatives Aussehen wären auch möglich.
Einfach in Spalte $E die Farben in RGB eintragen => 255,0,0 für rot usw.

Sub DiaErstellen()
    Dim lngZeile As Long, sF() As String
    With ActiveSheet.Shapes.AddChart2(269, xlBubble).Chart
        For lngZeile = 4 To 7 '<== die Zeilenanzahl kannst du noch variabel gestalten
            With .SeriesCollection.NewSeries
                .XValues = Worksheets("Tabelle1").Cells(lngZeile, 2)
                .Values = Worksheets("Tabelle1").Cells(lngZeile, 3)
                .BubbleSizes = Worksheets("Tabelle1").Cells(lngZeile, 4)
                .Name = Worksheets("Tabelle1").Cells(lngZeile, 1)
                sF = Split(Worksheets("Tabelle1").Cells(lngZeile, 5), ",")
                If UBound(sF) > 1 Then _
                .Interior.Color = RGB(Val(sF(0)), Val(sF(1)), Val(sF(2)))
            End With
        Next lngZeile
    End With
End Sub
viele Grüße
Karl-Heinz

Anzeige
AW: Lösungsvorschlag
19.04.2020 19:42:11
Wolfgang
Hallo Karin, hallo Volti,
danke!
Wie mein alter Prof, sagte: Es ist gar nicht so schwierig, man muss nur wissen, wie es geht!
Schönen Start in die Woche
Wolfgang
AW: Lösungsvorschlag Ergänzung
19.04.2020 21:15:29
Beverly
Hi Wolfgang,
die Farbe musst du nicht in eine extra Spalte als RGB-Werte eintragen - es reicht, wenn du z.B. in Spalte A die Zellen in der betreffenden Farbe formatierst. Die relevante Codeergänzung würde dann in der folgenden Zeile bestehen (vor End With):

.Interior.Color = Worksheets("Tabelle1").Cells(lngZeile, 1).Interior.Color


Anzeige
AW: Lösungsvorschlag
20.04.2020 17:19:27
wolfgang
Hallo nochmal,
funktioniert klasse.
Habe gerade noch eine andere Idee:
Könnte ich auch mehere Datenpunkte in einer Serie zusammenfassen und über .Points ansprechen? Die Zusammenfassung würde über einen gleichlautenden Eintrag z.B. in Spalte F erfolgen. Die würde ich dann auch alle identisch einfärben ...
Danke!
Wolfgang
AW: Lösungsvorschlag
20.04.2020 17:49:36
volti
Hallo Wolfgang,
ich habe leider nicht ganz verstanden, was Du meinst. In der Bubble-Grafik könnten mehrere Reihen mit je mehreren Datenpunkten sein (Habe ich z.B. hier bei mir aus alten Arbeitszeiten) oder halt auch, wie bei Dir hier, eine Grafik mit mehreren Reihen mit je einem Datenpunkt.
Hier mal ein Beispiel, wie Du alle Datenpunkte in allen Reihen ansprechen kannst. In diesem Beispiel werden alle auf die gleiche Farbe gesetzt. Im Beispiel wird die Farbe einheitlich aus der Zelle F1 genommen und alle Bubbles damit eingefärbt.
Aber bringt Dich das jetzt bei den paar Bubbles ggü. Karins Lösung mit den formatierten Zellen irgendwie weiter?

Sub Test()
 Dim xRows As Integer, xPoints As Integer, lFarbe As Long
' lFarbe = RGB(255, 255, 0)  'gelb
 lFarbe = Range("$F$1").Interior.Color
 For xRows = 1 To ActiveChart.SeriesCollection.Count
  With ActiveChart.SeriesCollection(xRows)
   For xPoints = 1 To .Points.Count 'Alle Datenpunkte der aktuellen Datenreihe durchgehen
     With .Points(xPoints)
       .Interior.Color = lFarbe     'Flächenfarbe
       .Border.Color = lFarbe       'Umrandungsfarbe
       .Border.Weight = 2           'Umrandung Strichstärke
     End With
   Next xPoints
  End With
 Next xRows
End Sub
viele Grüße
Karl-Heinz

Anzeige
Ich hatte doch bereits geschrieben...
20.04.2020 18:02:10
Beverly
Hi Wolfgang,
...wie du die Datenpunkte auf Basis der Zellformatierung färben kannst - färbe also die betreffenden (zu einer Serie gehörenden) Zellen mit derselben Farbe und dann werden die betreffenden Datenpunkte ebenfalls in derselben Farbe gefärbt.


AW: Ich hatte doch bereits geschrieben...
20.04.2020 19:42:07
Wolfgang
Hallo Karin,
Danke!
Hatte das mit bedingter Formatierung probiert, das wollte excel nicht umsetzen.
Mit harter Formatierung funzt es
Wolfgang
Das geht auch mit bedingter Formatierung...
20.04.2020 23:14:33
Beverly
Hi Wolfgang,
...nur musst du dann anstelle .Interior.Color dieses verwenden: .DisplayFormat.Interior.Color


Anzeige
AW: Das geht auch mit bedingter Formatierung...
21.04.2020 17:13:20
wolfgang
Hallo Karin,
cool, Danke!
Wolfgang

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige