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:

  1. Muestre la pestaña Inicio de la cinta.

  2. 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.

  3. Elija más colores. Excel muestra el cuadro de diálogo Colores.

  4. Asegúrese de que se muestre la pestaña Personalizado.

  5. Usando la lista desplegable Modelo de color, elija HSL. (Ver figura 1)

  6. 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.

  7. 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.

  1. 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.