Conversión de HSL a RGB (Microsoft Excel)
Bassel necesita una fórmula que pueda convertir los valores de color HSL (valores de tono, saturación y luminosidad) en valores de color RGB (valores de rojo, azul y verde). Se pregunta si alguien puede indicarle una fórmula de hoja de trabajo que haga esto o una forma de hacerlo en una macro.
La conversión de valores HSL a RGB no es una empresa particularmente trivial. Para aquellos interesados en las matemáticas detrás de esto, pueden ver el artículo de Wikipedia sobre el tema.
Si necesita realizar la conversión con poca frecuencia, la forma más sencilla es seguir estos pasos:
-
Muestre la pestaña Inicio de la cinta.
-
Haga clic en la flecha hacia abajo en el lado derecho de la herramienta Color de relleno, en el grupo Fuente. Excel muestra una pequeña paleta de colores y algunas otras opciones.
-
Elija más colores. Excel muestra el cuadro de diálogo Colores.
-
Asegúrese de que se muestre la pestaña Personalizado.
-
Usando la lista desplegable Modelo de color, elija HSL. (Ver figura 1)
-
En la parte inferior del cuadro de diálogo puede ver los valores individuales de Hue, Sat y Lum. Cambie estos valores por los que desee.
-
Usando la lista desplegable Modelo de color, elija RGB. Los valores que se muestran en la parte inferior del cuadro de diálogo son los valores HSL (ingresados en el paso 6)
convertido a RGB.
-
Haga clic en Cancelar cuando haya terminado.
Este enfoque asume que cada uno de sus valores HSL puede expresarse en el rango de 0 a 255. Sin embargo, si sus valores HSL son un ángulo (para tono) o un porcentaje (para saturación y luminancia), entonces necesitará para convertirlos manualmente antes de ingresarlos en el paso 6. Puede convertir un valor de ángulo multiplicando el ángulo por 255 y luego dividiéndolo por 360.
Los porcentajes se pueden convertir multiplicándolos por 2,55.
Si necesita obtener los valores con más frecuencia, le ayudará crear su propia función definida por el usuario para realizar la conversión. El siguiente ejemplo acepta tres parámetros (Tono, Saturación y Luminancia) y devuelve una cadena que contiene los valores RGB decimales separados por comas.
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 es su fuente de formación rentable en Microsoft Excel.
Este consejo (13535) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365.