Konvertieren von HSL in RGB (Microsoft Excel)
Bassel benötigt eine Formel, mit der HSL-Farbwerte (Farbton-, Sättigungs- und Helligkeitswerte) in RGB-Farbwerte (Rot-, Blau- und Grünwerte) konvertiert werden können. Er fragt sich, ob ihn jemand auf eine Arbeitsblattformel verweisen kann, die dies tut, oder auf eine Möglichkeit, dies in einem Makro zu tun.
Die Umrechnung von HSL- in RGB-Werte ist kein besonders triviales Unterfangen. Für diejenigen, die sich für die Mathematik dahinter interessieren, können Sie https://en.wikipedia.org/wiki/HSL_and_HSV[ den Wikipedia-Artikel zum Thema lesen.
Wenn Sie die Konvertierung nur selten durchführen müssen, gehen Sie am einfachsten wie folgt vor:
-
Zeigen Sie die Registerkarte Home des Menübands an.
-
Klicken Sie in der Gruppe Schriftart auf den Abwärtspfeil rechts neben dem Füllfarben-Werkzeug. Excel zeigt eine kleine Farbpalette und einige andere Optionen an.
-
Wählen Sie Weitere Farben. Excel zeigt das Dialogfeld Farben an.
-
Stellen Sie sicher, dass die Registerkarte Benutzerdefiniert angezeigt wird.
-
Wählen Sie in der Dropdown-Liste Farbmodell die Option HSL. (Siehe Abbildung 1.)
-
Am unteren Rand des Dialogfelds sehen Sie die einzelnen Werte für Farbton, Sat und Lum. Ändern Sie diese Werte nach Ihren Wünschen.
-
Wählen Sie in der Dropdown-Liste Farbmodell die Option RGB. Die am unteren Rand des Dialogfelds angezeigten Werte sind die HSL-Werte (in Schritt 6 eingegeben)
konvertiert zu RGB.
-
Klicken Sie auf Abbrechen, wenn Sie fertig sind.
Bei diesem Ansatz wird davon ausgegangen, dass jeder Ihrer HSL-Werte im Bereich von 0 bis 255 ausgedrückt werden kann. Wenn Ihre HSL-Werte jedoch entweder ein Winkel (für Farbton) oder ein Prozentsatz (für Sättigung und Luminanz) sind, benötigen Sie Um sie manuell zu konvertieren, bevor Sie sie in Schritt 6 eingeben. Sie können einen Winkelwert konvertieren, indem Sie den Winkel mit 255 multiplizieren und dann durch 360 dividieren.
Prozentsätze können umgerechnet werden, indem sie mit 2,55 multipliziert werden.
Wenn Sie die Werte häufiger abrufen müssen, hilft es, eine eigene benutzerdefinierte Funktion für die Konvertierung zu erstellen. Das folgende Beispiel akzeptiert drei Parameter (Farbton, Sättigung und Luminanz) und gibt eine Zeichenfolge zurück, die die durch Kommas getrennten dezimalen RGB-Werte enthält.
Function HSLtoRGB(Hue As Integer, Saturation As Integer, _ Luminance As Integer) As String Dim r As Integer Dim g As Integer Dim b As Integer Dim C As Double Dim X As Double Dim m As Double Dim rfrac As Double Dim gfrac As Double Dim bfrac As Double Dim hangle As Double Dim hfrac As Double Dim sfrac As Double Dim lfrac As Double If (Saturation = 0) Then r = 255 g = 255 b = 255 Else lfrac = Luminance / 255 hangle = Hue / 255 360 sfrac = Saturation / 255 C = (1 - Abs(2 lfrac - 1)) sfrac hfrac = hangle / 60 hfrac = hfrac - Int(hfrac / 2) 2 'fmod calc X = (1 - Abs(hfrac - 1)) C m = lfrac - C / 2 Select Case hangle Case Is < 60 rfrac = C gfrac = X bfrac = 0 Case Is < 120 rfrac = X gfrac = C bfrac = 0 Case Is < 180 rfrac = 0 gfrac = C bfrac = X Case Is < 240 rfrac = 0 gfrac = X bfrac = C Case Is < 300 rfrac = X gfrac = 0 bfrac = C Case Else rfrac = C gfrac = 0 bfrac = X End Select r = Round((rfrac + m) 255) g = Round((gfrac + m) * 255) b = Round((bfrac + m) * 255) End If HSLtoRGB = Str(r) & "," & Str(g) & "," & Str(b) End Function
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (13535) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365.