Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: jessylake

[已解决]这个函数可以将RGB格式和十六进制互转,若十六进制格式做点改动,函数怎么改?

[复制链接]
 楼主| 发表于 2014-8-24 18:26 | 显示全部楼层
tgydslr 发表于 2014-8-24 18:17
我的意思见附件

我明白了,加上数组公式的大括号就正确了
不错这应该是公式版本
回复

使用道具 举报

发表于 2014-8-24 19:49 | 显示全部楼层
jessylake 发表于 2014-8-24 18:12
我试了,按你的公式如果十六进制是 &H7FFF7F  转换后怎么是:RGB(224,224,224) 应该是:RGB(127,255,12 ...

数组公式必须三键结束也就是按下三件后出现你说的大括号才能返回正确结果
回复

使用道具 举报

 楼主| 发表于 2014-8-24 19:56 | 显示全部楼层
tgydslr 发表于 2014-8-24 19:49
数组公式必须三键结束也就是按下三件后出现你说的大括号才能返回正确结果

我后来发现,这的函数版本在16进制换格式后,转换成RGB居然没变化,也就是说不用改代码,真是奇怪,可惜我看不懂函数代码的意思
回复

使用道具 举报

发表于 2014-8-24 20:26 | 显示全部楼层
jessylake 发表于 2014-8-24 19:56
我后来发现,这的函数版本在16进制换格式后,转换成RGB居然没变化,也就是说不用改代码,真是奇怪,可惜我 ...

16进制格式无论咋变,其核心还是那几组数字或字母,看你所说的16进制格式不一样,好像是前缀后缀的问题,1楼你所写的两个格式其实也就是前后缀不一样的问题,值还是一样的,转换成RGB还应该是一样的
很可惜的是,怎么两个都像只会一种语言一样交流困难,
vba确实拿不出手
回复

使用道具 举报

 楼主| 发表于 2014-8-25 08:32 | 显示全部楼层
tgydslr 发表于 2014-8-24 19:49
数组公式必须三键结束也就是按下三件后出现你说的大括号才能返回正确结果

刚发现这个公式得出的结果顺序反了,十六进制的RGB的顺序就是反着的,最后两位代表R,帮我把这个公式改改
回复

使用道具 举报

发表于 2014-8-25 09:42 | 显示全部楼层
本帖最后由 tgydslr 于 2014-8-25 09:51 编辑
jessylake 发表于 2014-8-25 08:32
刚发现这个公式得出的结果顺序反了,十六进制的RGB的顺序就是反着的,最后两位代表R,帮我把这个公式改改


什么意思呀,你是说前两位代表B,最后两位代表R?
这样的话&HBFFFFD格式,假设十六进制代码在A2,则
="RGB"&TEXT(SUM((FIND(MID(A2,ROW($3:$8),1),"0123456789ABCDEF")-1)*16^MOD(ROW($1:$6),2)*1000^{0;0;1;1;2;2}),"(0,000,000)")
&H00FFFFFF&格式,假设十六进制代码在A3,则
="RGB"&TEXT(SUM((FIND(MID(A3,ROW($5:$10),1),"0123456789ABCDEF")-1)*16^MOD(ROW($1:$6),2)*1000^{0;0;1;1;2;2}),"(0,000,000)")
回复

使用道具 举报

发表于 2014-8-25 09:51 | 显示全部楼层
16进制转RGB.rar (6.26 KB, 下载次数: 17)
回复

使用道具 举报

 楼主| 发表于 2014-8-25 10:25 | 显示全部楼层
tgydslr 发表于 2014-8-25 09:51

这样就对了,谢谢
回复

使用道具 举报

发表于 2014-8-25 11:41 | 显示全部楼层
jessylake 发表于 2014-8-24 18:06
能不能帮我改改我发的附件中的函数?特别是RGB转十六进制的那个函数,真心看不懂啊,但觉得写得很棒

【特别是RGB转十六进制的那个函数,真心看不懂啊,但觉得写得很棒】

呵呵,那个函数真心写的很烂……
回复

使用道具 举报

发表于 2014-8-25 11:50 | 显示全部楼层    本楼为最佳答案   
jessylake 发表于 2014-8-24 19:56
我后来发现,这的函数版本在16进制换格式后,转换成RGB居然没变化,也就是说不用改代码,真是奇怪,可惜我 ...

格式虽然看似不同,但其十六进制数值时一模一样的:

ColorVal =12345678
t1 = Hex(ColorVal)                             '="BC614E"
t2 = "&H" & Hex(ColorVal)                 '="&HBC614E"
t3 = "&H00" & Hex(ColorVal) & "&"    '="&H00BC614E&"

MsgBox Val(t2) = Val(t3)                   '结果 = True


为啥一模一样? 我觉得小学生都应该能理解。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-6 21:15 , Processed in 0.357934 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表