在日常工作中,为了呈现出所选择区域数据的重要性,通常是标注一个颜色,或者字体加粗,达到更加醒目的效果。但是如果选择的区域更换比较频繁,手动改色调字体比较麻烦,而且当你选择下一个区域的时候还要对本区域进行还原,那就更加麻烦了。其实这个工作可以交给条件格式来完成。效果就是下面的动图。
要得到这个效果,需要使用函数和VBA结合完成。
VBA工作表事件
工作表事件是VBA的内容,不了解VBA也没有关系,按照本文的操作步骤做即可。
1、鼠标放在工作表名上,鼠标右键,查看代码
2、进入VBA编辑界面后,把代码复制进去,如下图所示
复制下面代码(黑色加粗部分)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [B2:H15]) Is Nothing Then [j2] = Target.Address
End Sub
代码解析(这里不是代码,不要复制到这里哦):
(1)、SelectionChange就是当选择区域发生变化时,就会触发代码运行。
(2)、Intersect(Target, [B2:H15])交集的意思,指选择的区域跟B2:H15这个区域发生交集才触发,也可以理解为,只有选择B2:H15这个区域内代码才会触发。
(3)、如果把If Not Intersect(Target, [B2:H15]) Is Nothing Then这一句删除,代码也能运行,删除后选择任何区域都会触发代码运行。
(4)、[j2] = Target.Address这一句的意思是说,把鼠标选择区域的地址写入到j2这个单元格里。
3、点击任意单元格测试代码运行,看下J2单元格是否显示所选择区域的地址
此时无论是选择一个单元格或者是选择一个区域,J2单元格都会显示对应的地址
条件格式写入公式
1、选择条件格式的区域
2、来到开始选项卡,点击条件格式,在跳出的菜单中选择最下面的管理规则
3、选择新建规则
4、点击使用公式确定要设置格式的单元格,然后在红框处输入公式
复制下面公式(黑色加粗部分)
=MATCH(ROW(B2),ROW(INDIRECT($J$2)),)+MATCH(COLUMN(B2),COLUMN(INDIRECT($J$2)),)
公式解析(这里不是公式,请不要复制到这里哦):
(1)、两组函数中间的+号不是真正意义上的加,而是“或者”的意思,也就是OR函数的意思,也可以把公式写成=OR(MATCH(ROW(B2),ROW(INDIRECT($J$2)),),MATCH(COLUMN(B2),COLUMN(INDIRECT($J$2)),))
(2)、其实在这里使用OR还是AND效果是一样的,AND也可以理解为乘,所以公式也可以写成=MATCH(ROW(B2),ROW(INDIRECT($J$2)),)*MATCH(COLUMN(B2),COLUMN(INDIRECT($J$2)),)
(3)、公式就是让这个区域的每个单元格(公式里用B2代替)的行号和列号通过MATCH函数查询是否被所选择区域的行号和列号包含其中,如果包含自然就是TRUE,不包含就是FALSE
(4)、条件格式里的公式并不“在意”算出来的结果,而是“在意”是否为正常运行,还是报错。也就是能算出结果就是TURE,算不出来报错了那自然就是FALSE
(5)、INDIRECT这个函数没有什么含义,就是为了重新定义J2里面的地址,否则ROW和COLUMN函数无法识别这个地址。
(6)、还有一个点需要注意了,这里MATCH函数的第三个参数是简写写法,千万不要漏输了那个逗号,否则就不是绝对匹配了,就达不到效果了。
5、选择调整的格式,底色,字体加粗,字体颜色
点击格式
来到填充,选择一个颜色,本文选中了黄色
再来到字体,选择加粗,选择字体颜色为红色,然后点击确认
此时当你的鼠标再次选择这个表格区域的时候,就会出现本文开头的效果了。
保存代码
由于涉及到VBA代码,所以普通工作簿是无法保存代码的,点击文件,点击另存为,保存类型选择启用宏的工作簿,然后再点击保存,这样才能保存VBA代码。
好了,关于条件格式就分享到这里。
如果这篇文章能帮助到你,请帮忙点赞、收藏、转发。
本文由快学Excel原创,欢迎大家关注。