确定颜色的RGB值(Microsoft Excel)
尼尔在工作表中经常使用颜色。他知道他可以根据数字RGB值生成颜色(如其他_ExcelTips_问题中所述)。 Neil想要做相反的事情-确定RGB值。他想知道是否有一种返回方法(通过函数或宏)
用于填充单元格的颜色的RGB值。 (Neil希望将实际颜色应用于单元格,而不是任何“替代”颜色,例如由条件格式施加的一种颜色。)
Excel不包含执行此操作的功能,但是如果您只需要检出单个单元格的RGB值,则最简单的方法是执行以下步骤:
。选择用您要检查的颜色格式化的单元格。
。显示功能区的“主页”选项卡。
。单击“填充颜色”工具右侧的“字体”组中的向下箭头。 Excel将显示一个小的调色板和一些其他选项。
。选择更多颜色。 Excel将显示“颜色”对话框。
。确保显示了“自定义”选项卡。 (请参见图1。)
。在对话框的底部,您可以看到单元格中颜色的红色,绿色和蓝色分量的各个值。
。完成后单击“确定”。
如果您需要更频繁地获取值,那么创建自己的用户定义函数是您的最佳选择。您使用的功能取决于实际要返回到工作表的内容。例如,如果要返回传统的六字符十六进制代码来表示RGB颜色,则可以使用以下非常简单的宏:
Function getRGB1(rcell) As String Dim sColor As String sColor = Right("000000" & Hex(rcell.Interior.Color), 6) getRGB1 = Right(sColor, 2) & Mid(sColor, 3, 2) & Left(sColor, 2) End Function
该宏查看您引用的任何单元格的内部颜色,以正确的顺序放置颜色的十六进制值,然后将字符串返回给Excel。要使用该函数,您只需在工作表中使用以这种方式引用的单元格来调用它:
=getRGB1(B4)
但是,您可能不希望将传统的十六进制代码用于RGB颜色。
如果要获取每种颜色的十进制值,则以下宏将返回:
Function getRGB2(rcell) As String Dim C As Long Dim R As Long Dim G As Long Dim B As Long C = rcell.Interior.Color R = C Mod 256 G = C \ 256 Mod 256 B = C \ 65536 Mod 256 getRGB2 = "R=" & R & ", G=" & G & ", B=" & B End Function
此版本以与getRGB1宏相同的方式调用,该版本返回字符串,例如“ R = 255,G = 204,B = 0”。您还可以根据设置的参数进一步修改宏,使其返回单个值:
Function getRGB3(rcell As Range, Optional opt As Integer) As Long Dim C As Long Dim R As Long Dim G As Long Dim B As Long C = rcell.Interior.Color R = C Mod 256 G = C \ 256 Mod 256 B = C \ 65536 Mod 256 If opt = 1 Then getRGB3 = R ElseIf opt = 2 Then getRGB3 = G ElseIf opt = 3 Then getRGB3 = B Else getRGB3 = C End If End Function
要使用该宏,只需在工作表中使用的函数中添加第二个参数,指定所需的内容:
=getRGB3(B4,1)
如果第二个参数为1,则该函数仅返回红色值。如果将第二个参数指定为2,则返回绿色值,而3返回蓝色值。第二个参数的任何其他值(或者如果完全省略)将返回内部颜色的完整十进制值。
如果您不想采用创建宏的路线,或者不只是要在Excel工作表中确定颜色,则可以考虑使用第三方实用程序。看起来很有趣的一个是Instant Eyedropper,它是免费的。您可以在这里找到有关它的更多信息:
http://instant-eyedropper.com
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(10180)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处找到适用于Excel的较早菜单界面的本技巧的版本: