图文 | 安伟星 来源 | 精进Excel
我在《Excel条件格式使用手册》一文中,从0到1完全讲解了Excel条件格式的前世今生,在所有条件规则中,用公式控制格式是最灵活、功能最强大的,因此我再开一篇教程,深入讲解用公式控制格式的玩法!
坐好,开车!
001 合同到期提醒
举例:有一项合同管理的工作,规则是如果7天内到期:则设置黄色底纹填充、白色加粗字体凸显;如果合同已经到期:则设置为红色底纹填充、白色加粗字体凸显。
▍步骤:
Step1:选中E3:E8单元格区域,新建格式规则
Step2:设置公式1:=$E3-TODAY()<7
Step3:设置黄色底纹填充、白色加粗字体格式
Step4:重复Step1-Step2,设置公式=$E3
这个案例比较简单,我们在初级教程中已经学过,其实就是多规则并存的条件格式设置。
002 报表美化之显示底纹
当表格数据行较多,我们为了让显示效果更加醒目,可以让工作表间隔固定行显示底纹,即每隔一行添加一个底色。
要隔行增加底纹,最好的办法是使用「套用表格格式」,套用表格格式之后,会将区域转化为智能表格(Excel table),如果不想将单元格区域转化为表格,使用条件格式设置隔行底纹是个不错的选择。
▍步骤:
Step1:选中需要设置格式的单元格区域,新建格式规则
Step2:设置公式:=MOD(ROW(),2)=0
Step3:设置灰色底纹填充
MOD(ROW(),2)是判断当前行数是否能被2整除,满足整除的行数被设置为灰色填充,所以最终效果为偶数行填充为灰色。
GIF>>
提示:函数MOD(number,divisor)返回两数相除的余数,其中Number为被除数,Divisor为除数。函数ROW(reference)返回引用的行号。其中Reference为需要得到其行号的单元格或单元格区域,如果省略 reference,则假定是对函数 ROW 所在单元格的引用。
003 查询聚光灯效果
这里的聚光灯指的是查询聚光灯,和WPS中的时时聚光灯(鼠标点在哪个单元格,对应的单元格的行和列会高亮)不太一样。Excel中也可以实现时时聚光灯,思路是一样的,只不过需要借助VBA实现再计算。
这里的查询聚光灯的意思是,根据已知的条件,查找到数据,会在原始是数据表高亮查询到的数据,以便于核对。
Step1:在G1、G2单元格分别设置姓名和学科的下拉菜单
(方法很简单,我也写过专门的教程)
Step2:在G3单元格写入公式=VLOOKUP($G$1,$A$1:$D$10,MATCH($G$2,$A$1:$D$1,0),0)
(注:本公式中的引用也可以用相对引用)
这是交叉引用的典型公式,公式中,VLOOKUP函数以G1单元格的姓名为查询值,查询区域为$A$1:$D$10列,因为有三个科目的成绩,需要根据科目的不同,返回不同列的值。
因此,VLOOKUP函数的第三个参数由公式MATCH($G$2,$A$1:$D$1,0)充当,它函数查询出G2在$A$1:$D$1单元格区域的位置。
公式嵌套的结果就是:G1单元格中的值,确定查找的姓名;G2单元格中值确定对应的科目,也就能返回姓名所在行和科目所在列交叉位置的成绩值。
Step3:选中B2:D10单元格区域,设置条件格式
公式为=OR($A2=$G$1,B$1=$G$2),格式为:淡红色底纹填充。
此条规则的意思就是:如果单元格所在行的行标题(即姓名)等于G1中的姓名,或者列标题(即科目)等于G2中的科目,两个条件满足其一,那么对B2:D10满足条件的区域设置淡红色底纹填充。
Step4:对成绩所在单元格设置条件格式:
选中B2:D10单元格区域,公式为=AND($A2=$G$1,B$1=$G$2),格式为:红色底纹,白色加粗字体。
此条规则的意思是:如果单元格所在行的行标题(即姓名)等于G1中的姓名,且列标题(即科目)等于G2中的科目,两个条件同时满足,则高亮显示,因为同时满足这两个条件的单元格就是行和列的交叉点(即成绩所在的单元格)。
这里有一个非常容易出错的点,就是说如果设置条件格式前选中的区域(这个区域其实就是推荐格式的作用区域)是A1:D10,那么公式应该这样写=OR($A1=$G$1,A$1=$G$2),注意条件判断的单元格起点变了。
能理解这一点,你的条件格式高级应用就出师了,几乎没有什么能难倒你的了。
004 易错点剖析
上面的三个案例,是条件格式比较高级的应用,相对烧脑,相信按照上面的教程,大家都能一步一步完成,但是如果想要举一反三,那么你还需要避开以下几个坑。
▍01、公式中引用方式出错
条件格式是逐个单元格进行判断的,在条件格式中,针对活动单元格的设置,将被作用到所选区域的每一个单元格。
正是因为会自动扩展进行判断,所以一定要注意相对引用和绝对引用的正确使用。
举例:
我们在003小结的Step3中,设置的公式为=OR($A2=$G$1,B$1=$G$2)
这就是因为我们设置的条件格式区域为:B2:D10这样一个多行多列的区域,在条件判断时,对于姓名,要确保在A列从A2开始到A10逐一和G2单元格中的值进行判断。
所以,$A2采用列绝对引用(确保不会偏向B列、C列……),行相对引用(确保可以逐行进行判断);而$G$1必须采用行列绝对引用,确保不会偏移。
对于科目,是同样的道理。
这个公式中,任何行列引用错误,都的不出来正确的结果。
▍02 作用范围设置错误
我们知道,设置条件格式的作用范围,有两种方法:
①设置条件格式之前,先框选范围;
②设置条件格式之前,不选择范围,最后在「条件格式规则管理器」中「应用于」设置作用范围,如图所示:
对于方法①,那么框选区域的方向不能反了,否则,条件格式会出错。
比如要设置:如果科目二成绩大于科目一,则C、D两列填充红色底纹。
作为范围的框选方向为从D10到C2
那么错误公式写法为:=$D2>$C2
这样设置后公式会自动变为:
=$D1048570>$C1048570
错误原因:
公式中引用的单元格必须为框选区域起始位置一致。本例框选的其实位置为D10,所以公式的写法为:=$D10>$C10
注意:正常情况下,我们框选区域,都是自上而下,自左而右,这样就不会碰到本例中的错误了。
▍03、优先级出错
在规则管理窗口中,优先执行排在上面的规则。在多规则并存的情况下,如果他们的作用区域是相同的,且设置的格式有冲突(比如规则一设置为红色底纹,规则二设置为黄色底纹),这时只会执行优先级高的规则;如果没有冲突,则两者都执行。
举例:
在003聚光灯效果中:
规则一:公式为=OR($A2=$G$1,B$1=$G$2),格式为:淡红色底纹填充
规则二:公式为=AND($A2=$G$1,B$1=$G$2),格式为:红色底纹,白色加粗字体
他们的优先级为:规则二优先级>规则一优先级
这很容易理解,因为规则一包含了规则二,如果先执行规则一,那么规则二也是满足规则一的,所以他们冲突的格式,就不会执行规则二的了。
我们来看一下,将规则一和规则二的优先级的顺序进行调换:
结果是这样的:
深红色的底纹没有显示,因为和规则一的淡红色底纹冲突。
最后,想说的是,从本教程的三个案例可以看出,条件格式最高级的应用,难点其实是公式的编写。事实上Excel很多功能,都是构建在高超的公式基础之上的,拼到最后拼的都是公式的能力。
·The End·
关注「精进Excel」,如果任意点开三篇,没有你想要的知识,算我耍流氓!