发布网友 发布时间:2022-04-24 08:48
共2个回答
热心网友 时间:2022-05-18 01:02
答:转换RGB可以使用公式。设置颜色可用代码。
如图:单元格B1的公式:
=MOD(INT(HEX2DEC(REPLACE(A1,1,1,""))/256 ^0),256)&","&MOD(INT(HEX2DEC(REPLACE(A1,1,1,""))/256 ^1),256)&","&MOD(INT(HEX2DEC(REPLACE(A1,1,1,""))/256 ^2),256)
返回结果分别代表R,G,B值。
C1单元格颜色可随A1的值改变而改变,具体实现方法,右键工作表标签--"查看代码",然后在窗口中贴入下面代码:
Private Sub Worksheet_Change(ByVal Target As Range)之后可以通过改变A1值得到相应结果。
热心网友 时间:2022-05-18 02:20
本回答基于 @mzz9060 的回答上进行修改并添加代码解释
首先简单说下区别,我们日常使用中的计算机颜色是以RGB形式排列的,而EXCEL中则刚好相反,是BGR形式,因此会发生一种情况,我们都知道#FF0000是纯红色,而把同样的颜色代码放到EXCEL里却被识别为了纯蓝色,这显然不符合我们的使用习惯,所以在公式基础上进行倒装
转换RGB可以使用公式。设置颜色可用代码。
=MOD(INT(HEX2DEC(REPLACE(A1,1,1,""))/256 ^2),256)&","&MOD(INT(HEX2DEC(REPLACE(A1,1,1,""))/256 ^1),256)&","&MOD(INT(HEX2DEC(REPLACE(A1,1,1,""))/256 ^0),256)
公式原理网上都能搜得到,这边就不再提了
返回结果分别代表R,G,B值,以逗号隔开。
接下来具象化颜色代码
工作表右键→查看代码
在编辑框中复制以下代码(百度回答模板则代码框找不到)
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then '获取第一列的值
For Each cell In Target
If cell = "" Then
cell.Offset(0, 2).Interior.Pattern = xlNone 'Offset(单元格行偏移(Y轴), 单元格列偏移(X轴)),当第一列无有效值时设置为无底色
Exit Sub
Else
'以RGB的格式进行获取,固定六位数以每两位进行截断并转换为对应的十进制,就可以以平时的RGB形式展现
cell.Offset(0, 2).Interior.Color = RGB(Application.Hex2Dec(Mid(cell, Len(cell) - 5, 2)), Application.Hex2Dec(Mid(cell, Len(cell) - 3, 2)), Application.Hex2Dec(Right(cell, 2)))
End If
Next
End If
End Sub
最后的效果是这样