今天好友向我求助,让我这个Excel大神(误)帮他把颜色代码全部以可视化的形式展现出来
我说你自己去网站查颜色不就好了?
他说有几千个呢……几千个………………
emmmmmmm……
好吧,本着“你不会去查百度啊”的精神,这种需求不可能只有他才需要
所以给了他关键字,让自生自灭去了
还真给找着了
于是我简单的看了一下这个答案……好吧,只能说这名网友是有根基的,但是对色彩貌似并没有什么概念,按RGB格式排列的AF0000怎么可能会呈现蓝色呢……
对,像极了我的一个下属,写完代码编译没报错就告诉我“老大这个做好了”然后内测的时候全是错的……
接下来进入正题
Excel的颜色标记并不是我们平时使用的RGB,而是BGR
这就意味着我们平时所熟知的纯红色#FF0000在EXCEL中被识别为了纯蓝色,而#0000FF也对应变成了纯红色。
所以在EXCEL中进行颜色标记时,需要把三原色的位置对调过来。
将宏代码改为使用RGB的方式进行排列
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
最后呈现效果
如果有尝试不成功的,来找我
原百度提问
excel中颜色16进制转换为rgb,单元格底色变为该颜色_百度知道zhidao.baidu.com