Haben Sie schon einmal Lust auf so etwas gehabt:
Ein Blasendiagramm, bei dem jede einzelne Blase durch ein Kreisdiagramm noch unterteilt ist. Gibt’s das in Excel? Leider – nein. Ist das machbar oder eine Fotomontage? Nun … es ist sozusagen eine Fotomontage, aber eine machbare, mit der Hilfe von einem kleinen Schnipsel VBA-Programmierung. Und das geht so:
1. Daten vorbereiten
Geben Sie für jede Blase alle erforderlichen Daten an: X-Wert, Y-Wert, die Werte für die einzelnen Kreissegmente und die Blasengröße (diese ist für gewöhnlich die Summe aus den Werten für die Kreissegmente). Am besten in der Reihenfolge X, Y, Blasengröße, Detailwerte. Den Bereich mit den Detailwerten (im Beispiel E2:H9) müssen Sie noch benennen, in dem Sie im Namenfeld KreisWerte hineinschreiben.
2. Blasendiagramm erzeugen
Erstellen Sie Ihr Blasendiagramm ganz herkömmlich. Die Datenquelle sind die X-, Y- und Blasengrößen-Angaben, die wir in Schritt 1 bereit gestellt haben..
Formatieren Sie das Blasendiagramm so, wie Sie es letztendlich haben wollen – stellen Sie also Achsen, Haupt- und Hilfslinien, Datenbeschriftung, … so ein, wie es für Sie passt. Zu guter Letzt braucht auch das Diagramm einen Namen – markieren Sie es also und geben Sie ins Namenfeld ErgBlasen ein.
3. Beispiel-Kreisdiagramm
Wählen Sie nun aus Ihren Detaildaten eine aussagekräftige Zeile – also am besten eine, in der kein Wert 0 ist. Auf Basis dieser Werte erzeugen Sie nun ein Kreisdiagramm und formatieren es nach Wunsch – Segmentfarben, … Jedenfalls müssen Sie sowohl die Zeichnungsfläche als auch den Diagrammbereich selbst mit DIAGRAMMTOOLS > FORMAT > Formenarten > Fülleffekt > Keine Füllung und mit DIAGRAMMTOOLS > FORMAT > Formenarten > Formkontur > kein Rahmen formatieren.
Auch das Kreisdiagramm braucht einen Namen: BspKreis
4. VBA-Code eingeben
In ein neues Modul geben Sie folgenden Code ein:
Sub PieMarkers() Dim myPie As Chart Dim myBubbles As Chart Dim myRow As Range Dim Point_I As Long Dim mySh As Worksheet Set mySh = ActiveSheet Application.ScreenUpdating = False Set myPie = mySh.ChartObjects("BspKreis").Chart Set myBubbles = mySh.ChartObjects("ErgBlasen").Chart Set myRow = Range(ThisWorkbook.Names("KreisWerte").RefersTo) Point_I = 0 For Each myRow In Range("KreisWerte").Rows myPie.SeriesCollection(1).Values = myRow myPie.Parent.CopyPicture xlScreen, xlPicture Point_I = Point_I + 1 myBubbles.SeriesCollection(1).Points(Point_I).Paste Next Application.ScreenUpdating = True End Sub
Sie erkennen da hoffentlich die Namen wieder, die wir soeben vergeben haben 🙂 Der Codeschnipsel geht jedenfalls alle Blasen aus ErgBlasen durch, „hängt“ unser BspKreis auf die Detailwerte aus der entsprechenden Zeile aus dem Bereich KreisWerte, macht dann ein Foto und befüllt die Blase damit. (Deshalb war die Transparenz so wichtig.)
5. Button erzeugen
Damit Sie das Programm bequem ausführen können, empfehle ich Ihnen noch, ENTWICKLERTOOLS > Steuerelemente > Einfügen eine Schaltfläche zu erzeugen und das erzeugte Makro zuzuweisen.
6. Ausführen
Klicken Sie auf Ihren Button. So oft Sie wollen und jedes Mal, wenn Sie an den Daten etwas verändert haben.
Noch Fragen? Sie wissen hoffentlich, wie Sie mich erreichen 🙂
Pingback: #Bubble #Pies oder #Kreise in #Blasen – daswirdimmerschöner | Soprani Software
Den Code hab ich hier noch einmal verfeinert: https://blog.soprani.at/2015/12/25/bubble-pies-oder-kreise-in-blasen-daswirdimmerschoener/
Gefällt mirGefällt mir