Conditional Formatting 应该是MS Excel 2003开始提供的功能吧,我以前刚遇到这个功能时用英文写了篇Blog记录了一下这个功能。但那篇Blog非常简略,今天就这个功能详细记录一下应用方面的事情。
这个功能用了一段时间下来,觉得最大的好处就是可以把要找的数据突显(Highlight)出来,而且是系统根据你预设的条件,满足了条件就自动帮你应用自定义的醒目格式。
在讲例子之前,先把这个功能相关的知识列一下:
A | B | C | D | |
1 | 城市 | 学员姓名 | 课程 | 分数 |
2 | 上海 | 潘华生 | 静电 | 90 |
3 | 北京 | 蔡道兴 | 静电 | 85 |
4 | 杭州 | 苏燕康 | 色彩 | 80 |
5 | 南宁 | 陈文俊 | 数码 | 77 |
6 | 武汉 | 陆衡 | 数码 | 82 |
7 | 广州 | 袁彪 | 色彩 | 88 |
8 | 杭州 | 曾丹斌 | 静电 | 95 |
9 | 上海 | 廖旭华 | 色彩 | 90 |
10 | 上海 | 梁建军 | 静电 | 70 |
11 | 北京 | 潘浩峰 | 静电 | 55 |
1. 分数分成三个档次,85分及以上是优秀,[60,85)是良好,小于60是差,要求用不同的颜色把分数档次显示出来,可以一目了然(tell at a glance)。
选择单元格D2,选择Format->Conditional Formatting 打开对话框。条件一:Cell Value is greater than or equal to 85,格式是单元格背景色为苹果绿。条件二:Cell Value is between 60 and 85,也可以是 Cell Value is greater than or equal to 60(根据这个功能的工作原理,这是第二个条件了),格式是单元格背景色为浅黄。条件三:Cell Value is less than 60,格式是单元格背景色为红色。见图:
D2单元格设置好后,把这个条件复制到整个分数栏,就用红黄绿三色把分数档次突显出来了。
刚才这个应用是用所选单元格的值(Cell Value Is)作为条件,如果我们要用其它单元格的值或别的什么你需要的条件作为筛选标准呢?还有一个更强大的选项,用公式(Formula Is)作为格式化的条件。点击“Cell Value Is”下拉框旁边的箭头,就可以选择“Formula Is”了。可以用你想的出的任意公式,只要它最后归结为 True 或False。输入公式的时候,一定要用等号(=)开始。
2. 用黄色突显来自杭州的学员的名字。
根据上例的经验,在城市一栏突显值是杭州的单元格是没问题的,但上面的方法不能用到学员姓名栏。我们这里改用公式来判断。选择单元格B2,打开Conditional Formatting 对话框,这次选择“Formula Is”,在公式框处输入:=($A2="杭州"),然后把格式设为黄色为背景色。
这个公式的意思就是拿所选单元格所在行的A栏的值跟“杭州”这个值比较,如果为真就应用预设格式。B2 因为不符合条件,我们设好后看不到效果。把B2 的条件复制到整个B 栏,就可以看到效果了。我们可以选择B8 查看一下复制的结果,应该是“=($A8="杭州")”。
顺便说一下,我用$A2 而不是A2 的单元格引用表达方式,是为了在复制的时候保持A栏的固定。比如我把B2 的条件格式复制到C 栏,就会把来自杭州的学员上的课突显出来,这时去检查比如C3,就会显示“=($A3="杭州")”,保持用城市栏做比较。
3. 把来自上海,并上了色彩课的学员所在行整行用红色标示出来。
这个例子要同时满足两个条件,但是Conditional Formatting 最多能设的三个条件之间不是AND的关系,而是OR的关系,只要满足一个就可以了。所以我们只能在公式上动脑筋。选择单元格B2,经过测试,以下几个公式是有效的:
=($A2="上海")*($C2="色彩") (注:* 表示和,+表示或)
=AND($A2="上海",$C2="色彩")
=IF($A2="上海",IF($C2="色彩",TRUE,FALSE),FALSE)
然后把这个条件复制到A2:D11整个区域。
4. 突显不止一个学员的城市。
关键还是公式怎么写,选择单元格A2,打开Conditional Formatting 对话框,选择“Formula Is”,在公式框处输入:=COUNTIF($A:$A,$A2)>1,选择一个显眼的颜色作为底色,然后把它复制到整个A 栏或其它所有单元格就可以看到效果了。
5. 隔行用某个颜色作为单元格的底色。
这个例子因为用到的公式的特殊性,可以先选择要应用的全部单元范围,在Conditional Formatting 对话框的公式框处输入:=MOD(ROW(),2)=1 或 =MOD(ROW(),2)=0,再选择一个单元格底色,效果如图: