Fläche unter einer Kurve in Excel einfärben
Schritt-für-Schritt-Anleitung
Um die Fläche unter einer Kurve in einem XY-Diagramm zu füllen, kannst du folgendes VBA-Makro verwenden. Stelle sicher, dass dein Diagramm aktiv ist, während du das Makro ausführst.
- Öffne Excel und drücke
ALT + F11
, um den Visual Basic for Applications (VBA) Editor zu öffnen.
- Wähle
Einfügen > Modul
, um ein neues Modul zu erstellen.
- Kopiere und füge den folgenden Code ein:
Sub ShadeBelow()
Dim myCht As Chart
Dim mySrs As Series
Dim Npts As Integer, Ipts As Integer
Dim myBuilder As FreeformBuilder
Dim myShape As Shape
Dim Xnode As Double, Ynode As Double
Dim Xmin As Double, Xmax As Double
Dim Ymin As Double, Ymax As Double
Dim Xleft As Double, Ytop As Double
Dim Xwidth As Double, Yheight As Double
Set myCht = ActiveChart
Xleft = myCht.PlotArea.InsideLeft
Xwidth = myCht.PlotArea.InsideWidth
Ytop = myCht.PlotArea.InsideTop
Yheight = myCht.PlotArea.InsideHeight
Xmin = myCht.Axes(1).MinimumScale
Xmax = myCht.Axes(1).MaximumScale
Ymin = myCht.Axes(2).MinimumScale
Ymax = myCht.Axes(2).MaximumScale
Set mySrs = myCht.SeriesCollection(1)
Npts = mySrs.Points.Count
' first point
Xnode = Xleft + (mySrs.XValues(1) - Xmin) * Xwidth / (Xmax - Xmin)
Ynode = Ytop + Yheight
Set myBuilder = myCht.Shapes.BuildFreeform(msoEditingAuto, Xnode, Ynode)
' remaining points
For Ipts = 1 To Npts
Xnode = Xleft + (mySrs.XValues(Ipts) - Xmin) * Xwidth / (Xmax - Xmin)
Ynode = Ytop + (Ymax - mySrs.Values(Ipts)) * Yheight / (Ymax - Ymin)
myBuilder.AddNodes msoSegmentLine, msoEditingAuto, Xnode, Ynode
Next
Xnode = Xleft + (mySrs.XValues(Npts) - Xmin) * Xwidth / (Xmax - Xmin)
Ynode = Ytop + Yheight
myBuilder.AddNodes msoSegmentLine, msoEditingAuto, Xnode, Ynode
Xnode = Xleft + (mySrs.XValues(1) - Xmin) * Xwidth / (Xmax - Xmin)
Ynode = Ytop + Yheight
myBuilder.AddNodes msoSegmentLine, msoEditingAuto, Xnode, Ynode
Set myShape = myBuilder.ConvertToShape
With myShape
.Fill.ForeColor.SchemeColor = 12 ' Farben hier anpassen
.Line.Visible = False
End With
End Sub
- Schließe den VBA-Editor und führe das Makro aus, während dein Diagramm aktiv ist.
Häufige Fehler und Lösungen
-
Fehler 9: Laufzeitfehler - Dieser Fehler kann auftreten, wenn die X-Werte in der Datentabelle nicht mit dem kleinsten X-Wert (0) beginnen. Überprüfe deine Daten und stelle sicher, dass sie korrekt sind.
-
Keine Fläche sichtbar - Wenn du keine Fläche siehst, kann es sein, dass die Y-Werte negativ sind oder nicht korrekt interpretiert werden. Achte darauf, dass du die negativen Werte auf den Minimalwert der Y-Achse setzt.
-
Form bleibt über den Diagrammrand hinaus - Um die Fläche genau zu begrenzen, kannst du die X-Werte im Code anpassen, sodass sie den maximalen Skalenwert nicht überschreiten.
Alternative Methoden
Eine alternative Methode, um die Fläche unter einer Kurve zu färben, ist die Verwendung von Fehlerindikatoren:
- Wähle dein Diagramm aus.
- Rechtsklicke auf die Datenreihe und wähle "Datenreihe formatieren".
- Aktiviere die Fehlerindikatoren für die Y-Werte.
- Stelle sicher, dass die Fehlerindikatoren so konfiguriert sind, dass sie die Fläche unter der Kurve korrekt darstellen.
Diese Methode kann hilfreich sein, wenn du keine VBA-Lösungen nutzen möchtest.
Praktische Beispiele
Hier ist ein Beispiel für ein XY-Diagramm, bei dem die Fläche unter der Kurve eingefärbt ist:
- Erstelle in Excel eine Tabelle mit X-Werten und Y-Werten.
- Wähle die Tabelle aus und füge ein XY-Diagramm ein.
- Führe das oben beschriebene Makro aus, um die Fläche unter der Kurve zu füllen.
Tipps für Profis
- Nutze benutzerdefinierte Farben für die Flächenfüllung, um dein Diagramm ansprechender zu gestalten.
- Experimentiere mit verschiedenen Diagrammtypen, wie z.B. Netzdiagrammen, um unterschiedliche visuelle Darstellungen zu erhalten.
- Wenn du regelmäßig mit Diagrammen arbeitest, erstelle deine eigenen Makros zur Automatisierung des Prozesses.
FAQ: Häufige Fragen
1. Wie kann ich die Fläche zwischen zwei Linien füllen?
Du kannst ähnliche VBA-Methoden verwenden, um die Fläche zwischen zwei Linien in einem XY-Diagramm zu füllen, indem du die Punkte beider Linien in deinem Makro berücksichtigst.
2. Kann ich die gefüllte Fläche später wieder löschen?
Ja, du kannst das Formobjekt mit myShape.Delete
im VBA-Code löschen, indem du darauf zugreifst, nachdem du es erstellt hast.
3. Welche Excel-Version benötige ich für diese Methoden?
Die beschriebenen Methoden sind in den meisten modernen Excel-Versionen (2007 und höher) anwendbar. Achte darauf, dass die Makro-Sicherheitseinstellungen korrekt konfiguriert sind.