Bassel需要一个可以将HSL颜色值(色调,饱和度和亮度值)转换为RGB颜色值(红色,蓝色和绿色值)的公式。他想知道是否有人可以将他指向将要执行此操作的工作表公式或在宏中执行此操作的方法。

从HSL转换为RGB值并不是一件容易的事。对于那些对其背后的数学感兴趣的人,您可以https://en.wikipedia.org/wiki/HSL_and_HSV [查看有关该主题的Wikipedia文章]。

如果您需要不频繁地进行转换,最简单的方法是遵循以下步骤:

。显示功能区的“主页”选项卡。

。单击“填充颜色”工具右侧的“字体”组中的向下箭头。 Excel将显示一个小的调色板和一些其他选项。

。选择更多颜色。 Excel将显示“颜色”对话框。

。确保显示了“自定义”选项卡。

。使用颜色模型下拉列表,选择HSL。 (请参见图1。)

。在对话框的底部,您可以看到Hue,Sat和Lum的各个值。将这些值更改为所需的任何值。

。使用颜色模型下拉列表,选择RGB。对话框底部显示的值是HSL值(在步骤6中输入)

转换为RGB。

。完成后单击“取消”。

这种方法假设您的每个HSL值都可以在0到255之间表示。但是,如果您的HSL值是角度(用于色相)或百分比(用于饱和度和亮度),那么您将需要在步骤6中输入之前手动进行转换。可以通过将角度乘以255然后除以360来转换角度值。可以通过将百分比乘以2.55来转换百分比。

如果您需要更频繁地获取值,那么创建自己的用户定义函数进行转换将有所帮助。以下示例接受三个参数(“色调”,“饱和度”和“亮度”),并返回一个字符串,其中包含用逗号分隔的十进制RGB值。

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_是您进行经济高效的Microsoft Excel培训的来源。

本提示(13535)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。