【社区答疑】通过WPS表格JS宏自定义函数获取单元格背景色的颜色值
WPS函数专家
要想下班早,表格必须用的好!
大家好,我是张俊。
⭐场景
最近在社区上看到求助者这样一篇提问帖子:请问下自定义函数怎么设置传入单元格的背景色,内容具体如下:
- 场景分析
求助者主要是想通过在WPS表格中通过JS宏的自定义函数来获取B2单元格中的背景色的颜色值。此问题看起来其实并不复杂,只需要获取出B2单元格背景色的颜色值即可。但是复杂的是,获取到的颜色值相以什么样的方式展示呢?
💡 | 我们需要知道有哪些? WPS表格颜色索引值、10进制的颜色值、16进制的颜色值、RGB值、HSL值和CMYK值等,由于HSL值和CMYK值等并不常见,暂不做展示,如有需要可以在评论区留言,视情况来编写对应的值。 |
- 操作步骤
2.1进入开发环境
如果对于WPS表格JS宏知之甚少的话,建议可以从此帖学起:👉【JS宏教程】WPS表格JS宏快速入门必备最基础知识
1.WPS表格的“工具”选项卡中点击“开发工具”
2.在展开的“开发工具”选项卡中点击“WPS 宏编辑器”即可进入WPS JS宏编辑器。
具体如下图操作所示:
2.2编写自定义函数代码框架
1.在“编辑代码区”直接输入如下代码:
function GET_COLOR(rng,type){
}
具体如下图操作所示:
2.3输入对应代码
在自定义函数代码框架代码中输入以下代码:
var clr_idx=rng.Interior.ColorIndex
if (type=="idx"){
return clr_idx
}
clr=rng.Interior.Color
if (type=="10"){
return clr
}
var wf=Application.WorksheetFunction
var clr_hex=wf.Dec2Hex(clr)
var hex_len=clr_hex.length
if (hex_len<6){
clr_hex=wf.Rept("0",6-hex_len)+clr_hex
}
r_hex=clr_hex.slice(4)
g_hex=clr_hex.slice(2,4)
b_hex=clr_hex.slice(0,2)
if (type=="16"){
return r_hex+g_hex+b_hex
}else if(type=="rgb"){
return wf.Hex2Dec(r_hex)+","+wf.Hex2Dec(g_hex)+","+wf.Hex2Dec(b_hex)
}
具体如下图所示:
2.4加上代码注释
对于2.3输入代码后,其实程序已经可以达到对应的效果了,但是对于初学者不太友好,具体如下:
1.初学者不知道代码逻辑和意义
2.如果想修改代码也不知道如何修改
因此给代码加上注释也是一个程序员必备基本技能。
具体代码和注释如下:
function GET_COLOR(rng,type){
var clr_idx=rng.Interior.ColorIndex//获取对应单元格背景色的索引值
if (type=="idx"){//如果第二参数为idx时,则返回索引值
return clr_idx
}
clr=rng.Interior.Color//获取对应单元格背景色的10进制颜色值
if (type=="10"){//如果第二参数为10时,则返回10进制颜色值
return clr
}
var wf=Application.WorksheetFunction//声明wf为工作表函数,方便后期调用和简化代码
var clr_hex=wf.Dec2Hex(clr)//将10进制的颜色值转化为16进制的颜色值
var hex_len=clr_hex.length//获取16进制颜色值的长度
if (hex_len<6){//判断16进制颜色值的长度是否小于6位
clr_hex=wf.Rept("0",6-hex_len)+clr_hex//如果小于6位则在前面补充对应的0补充至6位
}
r_hex=clr_hex.slice(4)//获取16进制颜色的红色值(为16进制颜色的第5-6位)
g_hex=clr_hex.slice(2,4)//获取16进制颜色的绿色值(为16进制颜色的第3-4位)
b_hex=clr_hex.slice(0,2)//获取16进制颜色的蓝色值(为16进制颜色的第1-2位)
if (type=="16"){//如果第二参数为16时,则返回16进制对应的颜色值
return r_hex+g_hex+b_hex
}else if(type=="rgb"){//如果第二参数为rgb时,则返回10进制对应的rgb值
return wf.Hex2Dec(r_hex)+","+wf.Hex2Dec(g_hex)+","+wf.Hex2Dec(b_hex)
}
}
- 操作效果
3.1标准背景色
完成WPS表格JS宏的自定义函数的效果如下操作所示:
3.2自定义背景色
设置自定义背景颜色后,效果如下图所示:
3.3自定义函数说明
自定义函数GET_COLOR包含2个参数:rng和type
参数1:rng获取对应单元格
参数2:type有4个值分别为:"idx"、"10"、"16"、"rgb"
"idx"返回颜色索引值(WPS表格默认的56个颜色<返回1到56的整数>)
"10"返回10进制的颜色值(0到16777215<256的3次方>)
"16"返回"000000"到"FFFFFF"(16进制的0到16777215<256的3次方>)
"rgb"返回对应的RGB值(各值之间用","隔开<各个值在0到255之间>)
- 文件保存
最后保存文件的时候会有提示,记得点击“否”,由于包含有JS宏代码,建议保存为“xlsm”格式的文件哦~
关于通过WPS表格JS宏事件完成点击后显示结果的方法,你学会了吗?学会的话,记得点赞❤️❤️❤️并在评论区评论“我学会了!”,您的点赞❤️❤️❤️和评论是对我最大的支持!
练习文件:👉JS宏自定义函数获取单元格颜色值👈
往期社区答疑帖子推荐:
个人往期帖子合集:【帖子合集】个人往期帖子合集来了!
创作者俱乐部成员
WPS函数专家