excel中颜色16进制转换为rgb,单元格底色变为该颜色

发布网友 发布时间: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)
    If Target.Column = 1 Then
        For Each cell In Target
            If cell = "" Then
                cell.Offset(0, 2).Interior.Pattern = xlNone
                Exit Sub
            Else
                cell.Offset(0, 2).Interior.Color = Application.Hex2Dec(Right(cell, Len(cell) - 1))
            End If
        Next
    End If
End Sub

之后可以通过改变A1值得到相应结果。

热心网友 时间:2022-05-18 02:20

本回答基于 @mzz9060 的回答上进行修改并添加代码解释

首先简单说下区别,我们日常使用中的计算机颜色是以RGB形式排列的,而EXCEL中则刚好相反,是BGR形式,因此会发生一种情况,我们都知道#FF0000是纯红色,而把同样的颜色代码放到EXCEL里却被识别为了纯蓝色,这显然不符合我们的使用习惯,所以在公式基础上进行倒装

RGB格式的#FF0000:纯红

BGR格式的#FF0000,纯蓝

转换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



mzz9060的代码不能使用的原因在截图里


最后的效果是这样

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com