1. 为什么默认的“文本包含”不够用:其实它只覆盖了最简单的情况
1.1 默认规则到底做了什么
有朋友给我发来一份两千多行的供应商名单,让我帮他标出客户名称里带“科技”两个字的单元格。这大概是条件格式最典型的用法:选中数据区,开始——条件格式——突出显示单元格规则——文本包含,输入“科技”,选个填充色,确定,完事。
这一步确实能在大部分时候解决问题。但注意,所谓“文本包含”,本质上做的是通配符包含匹配,它等价于你在背后写了一句 COUNTIF(A1,"*科技*")>0。这句话翻译过来是:只要单元格里出现过“科技”这两个字符,无论出现在开头、中间还是结尾,都算命中。这也是它最大的特点:简单,但不可控。
我在实际帮人处理表格的时候,发现默认规则能覆盖的需求可能只有一半。剩下的一半,要么是“包含”的反面,要么是多个条件叠加,要么是关键词想要随时换着来。这些问题一旦出现,默认的“文本包含”就完全帮不上忙,必须回到条件格式的最底层能力——用公式判断。
1.2 我需要排除,而不是包含
第一个典型需求是“不包含”。比如那张供应商名单里,我要标出所有名称里不包含“科技”的客户,方便业务部门做筛选。你打开“文本包含”对话框,会发现这个功能压根没有“不包含”的选项,它只能帮你把包含的标出来。有人会想,那我先标包含的,再反选行不行?不行,条件格式是实时刷新的,没有“反选”这种操作。
这种情况只能用公式。条件格式的“使用公式确定要设置格式的单元格”支持任意布尔表达式,所以我可以写:
excel复制=NOT(ISNUMBER(FIND("科技", $A2)))
这句的意思是:在A2里找“科技”,找到会返回一个位置数字,找不到会返回错误;ISNUMBER 把“找到”变成 TRUE、把“找不到”变成 FALSE,再套一个 NOT 取反,就变成:当A2不包含“科技”时,条件成立。
这类“反着匹配”的需求,在数据清洗里很常见。比如要标出备注里没有写联系电话的记录,或者标出产品名称里漏写了规格型号的行,不包含判断比包含判断更有价值,因为你要处理的是异常数据。
1.3 关键词得能随时替换
第二个需求更头疼。朋友说,这个“科技”只是第一轮筛选,后面他可能要看“贸易”“股份”“集团”,每一轮都要重新标一遍。你要是用默认的“文本包含”,每换一个关键词,就得打开一次对话框,把旧词删掉、敲入新词、再确认。一次两次还好,连续看五六个关键词,人会疯掉。
更合理的做法,是预留一个专门放关键词的单元格。比如我在E1单元格里输入“科技”,条件格式的公式里引用 $E$1,之后我只改E1的内容,整张表的高亮就会自动跟着变。原理其实很简单:条件格式公式支持引用单元格,而且引用单元格的值会实时参与计算。这就是一个最简单的动态高亮看板。
1.4 英文语境里的痛:默认规则不区分大小写
还有一个默认规则完全没法处理的情况:大小写。假设你的表格里有一列英文状态标识,要标出所有包含“CRM”的单元格。默认的“文本包含”是不区分大小写的,它会把“crm”“Crm”“CRM”全部标出来。如果业务上只关心全大写“CRM”,默认规则就做不到。
这类场景下,FIND 函数是目前最简单可靠的方案。FIND 是区分大小写的,它找“CRM”就不会匹配“crm”。所以,表面上看“文本包含”对话框帮我们做了所有事,其实它把匹配逻辑写死了、写简单了。
我现在做条件格式,凡是涉及子字符串匹配的,几乎不用默认的“
