【社区答疑】根据单元格颜色提取相关信息(JS篇)

张俊
张俊

WPS函数专家

要想下班早,表格必须用的好!

大家好,我是张俊。

场景

今天在社区看到求助者@WPS_1569843594提问关于提取表中对标绿色的单元格的颜色问题,有很多大佬参与,我也来凑个热闹,具体如下:

我整理的模拟数据如下:

数据效果

提取效果

  1. 问题分析

需要先了解下求助者的问题,主要是想将标记颜色的单元格对应的数据(公司名、工作内容、星期、日期、时段等)提取出来,如果想要提取表格中颜色的函数,目前WPS表格还没有这样的函数的,如果是用宏表函数的话,GET.CELL函数是可以考虑的(需要名称管理器里应用),也可以通过二次开发的VBA和JS来完成,由于WPS表格直接支持JS宏,因此我的方案是通过JS宏来完成。

  1. 代码制作

需要注意问题是对应的企业名称和日期存在合并单元格,而实际合并单元格除右上角存在内容,其他的单元格都是空白单元格,因此需要用到判断如果没有数据还需向上向左找数据(用到单元格的End方法)。具体代码如下:

function tqxx(){

var rngs=Range("c4:w13")

var arr=[["企业","工作内容","开始时间","结束时间","时段"]]

for (var rng of rngs){

if (rng.Interior.Color==65535){

var r=rng.Row

var c=rng.Column

//企业名称

if (Cells(r,1).Value2==null){

qymc=Cells(r,1).End(xlUp).Value2

}else{

qymc=Cells(r,1).Value2

}

//工作内容

var gznr=Cells(r,2).Value2

//星期和日期

if (Cells(1,c).Value2==null){

var xq=Cells(1,c).End(xlToLeft).Value2

var rq=Cells(2,c).End(xlToLeft).Value2

}else{

var xq=Cells(1,c).Value2

var rq=Cells(2,c).Value2

}

//时段

var sd=Cells(3,c).Value2

arr.push([qymc,gznr,rq,rq,sd])

}

}

Range("y1").Resize(arr.length,5).Value2=arr

}

  1. 效果展示

设置完成后,只需通过按钮一键点击即可完成,代码展示效果如下图操作所示:

  1. 方法总结

通过JS宏来编辑代码需用到的思路和方法具体如下:

1)通过For循环来遍历C4:W13单元格区域,单元格区域是先从左至右,再从上向下逐个遍历。

2)通过Range.Interior.Color判断单元格的背景颜色,当前为黄色,颜色值为655345。

3)读取对应的公司名称和日期时,需要偏移,因此需要获取满足条件的所在行序号(Row)或所在列序号(Column),再判断是否为空(null),如果为空则根据End(xlUp)End(xlToLeft)方法的来向上或向左查找满足的数据。

4)将满足的数据存储在数组arr中,然后通过Rang.Resize方法,将数据写入到Y1单元格起始的区域中。

如对JS宏基础还不太熟悉的宝子们,可以参考此帖:【JS宏教程】WPS表格JS宏快速入门必备最基础知识

都看到这里了,记得得❤️❤️❤️点赞(红心❤️❤️❤️收藏(五角星并在评论区评论“我学会了!”,您的❤️❤️❤️点赞(红心❤️❤️❤️收藏(五角星和评论是对我最大的支持!

🚩

练习文件:👉【社区答疑】提取标示颜色区域的信息👈


JS宏基础推荐帖:【JS宏教程】WPS表格JS宏快速入门必备最基础知识

个人往期帖子合集:【帖子合集】个人往期帖子合集来了!

你学会了吗?
学会了!
1 (20%)
太难了!
4 (80%)
5人参与 投票已截止
上海
浏览 1338
2
5
分享
5 +1
10
2 +1
全部评论 10
 
wps新路
wps新路

WPS函数专家

俊哥厉害 点赞
· 重庆
1
回复
张俊
张俊

WPS函数专家

跟着新路老师不迷路,新路老师带我们上高速!
· 上海
回复
 
秋菊
优秀的张老师!
· 江苏省
1
回复
张俊
张俊

WPS函数专家

谢谢认可,期待能和你有更加深入的交流!
· 上海
回复
 
WPS_1569843594
张俊老师牛牛哒!!感恩
· 广东省
1
回复
张俊
张俊

WPS函数专家

期待和你有更多的交流!
· 上海
回复
 
懒得批爆
懒得批爆

创作者俱乐部成员

大佬就是牛 虽然看不懂代码,但不影响我点赞。
· 四川省
1
回复
张俊
张俊

WPS函数专家

这就是传说中的“不明觉厉”吗?
· 上海
回复