Menu

Excel 条件格式:公式规则与示例

条件格式会在条件成立时给单元格着色。使用“开始 > 条件格式”中的预设规则,或通过“新建规则 > 使用公式”写一条像 =$C2>100 这样的规则,为整行、逾期日期和包含指定文本的单元格着色。

本页的每张表格都是实时的:修改数字或公式,就会重新计算。

条件格式会在条件成立时改变单元格的外观(填充、字体颜色、边框)。选中单元格,打开 开始 > 条件格式,选一条预设规则;或者选择 新建规则 > 使用公式确定要设置格式的单元格,输入 =$C2>100 这样的公式,它会给 C 列金额大于 100 的每一行着色。

金额大于 100 的订单
A1
ABCDE
1OrderRegionAmountDueStatus
21001North1202026-03-02Paid
31002South852026-03-10Open
41003North2402026-03-12Open
51004East602026-03-20Paid
61005South1502026-03-25Open
71006East952026-03-08Open
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

第 2、4、6 行被突出显示。把 C3 改成 100 不会有变化,因为规则要求大于 100;改成 101,第 3 行就亮起来了。规则显示在表格下方,你可以点击并编辑它。

如何添加条件格式规则

菜单中有针对常见情况的现成规则:

  • 突出显示单元格规则:大于、小于、介于、等于、文本包含、发生日期、重复值。
  • 最前/最后规则:前 10 项、前 10%、最后 10 项、最后 10%、高于平均值、低于平均值(其中的 10 可以修改)。
  • 数据条、色阶 和 图标集:它们按每个单元格数值的大小着色,而不是判断某个条件。

其他情况就写一条公式规则:

  1. 从左上角的单元格开始选中要设置格式的单元格,让它成为活动单元格。对于上面的表格,就是 A2:E7。
  2. 打开 开始 > 条件格式 > 新建规则。
  3. 选择 使用公式确定要设置格式的单元格。
  4. 为活动单元格输入公式。它必须返回 TRUE 或 FALSE:=$C2>100。
  5. 点击 格式,选择填充色或字体颜色,然后点两次确定。

Excel 会把公式移到区域中的每个单元格,就像向下和向右填充公式一样,所以美元符号决定了每个单元格看的是哪里。$C2 表示“C 列,本行”:列固定,行移动。本页的规则显示的正是你要在那个框里输入的公式。

突出显示大于另一个单元格中数值的单元格

让规则指向一个单元格而不是直接写数字,阈值改起来就很方便。下面的规则只给 Amount 列的单元格着色,并把每个单元格与 F2 比较;$F$2 中的 $ 符号让每个单元格都看向 F2。

金额超过上限
F2
ABCDEF
1OrderRegionAmountLimit
21001North120100
31002South85
41003North240
51004East60
61005South150
71006East95
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

C2、C4 和 C6 被着色。在 F2 中输入 90,C7 也会加入;输入 200,就只剩 C4。预设规则 突出显示单元格规则 > 大于 的输入框里也可以填单元格引用(=$F$2)。

根据文本突出显示整行

文本条件要放在引号中。=$B2="North" 会给地区为 North 的每一行着色。用 = 比较时不区分大小写,所以 north 也能匹配。如果只要文本 包含 某个词就算匹配,就把 SEARCH 放在 ISNUMBER 中:SEARCH 返回这个词的位置,找不到时返回错误,ISNUMBER 再把结果转换成 TRUE 或 FALSE。

按地区标记行,按关键词标记备注
A1
ABCD
1OrderRegionAmountNote
21001North120Paid on time
31002South85Late, called twice
41003North240
51004East60Paid late
61005South150Waiting for invoice
71006East95
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

第 2 行和第 4 行因为是 North 而被着色,D3 和 D5 中包含“late”(其中一个写作 Late)。把 B7 改成 North,第 7 行也会加入。预设规则 突出显示单元格规则 > 文本包含 对选中的单元格的作用与 SEARCH 规则相同。

突出显示逾期日期

一个未完成的订单,到期日早于今天就算逾期。在 Excel 中规则是 =AND($E2="Open",$D2<TODAY()),颜色每天都会更新。下面的表格在 G2 中用一个固定日期代替 TODAY(),这样无论你什么时候看,示例都一样:=AND($E2="Open",$D2<$G$2)。

逾期的未完成订单
G2
ABCDEFG
1OrderRegionAmountDueStatusToday
21001North1202026-03-02Paid2026-03-15
31002South852026-03-10Open
41003North2402026-03-12Open
51004East602026-03-20Paid
61005South1502026-03-25Open
71006East952026-03-08Open
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

G2 为 2026-03-15 时,第 3、4、7 行逾期。第 2 行日期更早,但已经付款,所以 AND 让它保持原样。第二条规则给未来七天内到期的 D 列单元格着色:目前还没有。把 G2 改成 2026-03-20,D6(2026-03-25 到期)就会被它着色。把 E3 改成 Paid,第 3 行就不再标记。

如果想不写公式就标出“本周到期”或“上个月”,预设的 突出显示单元格规则 > 发生日期 里有这些选项。

突出显示空白单元格或缺少值的行

对于空单元格(以及返回空文本的公式),=B2="" 为 TRUE。在列字母前加 $,就能在某一行中有一个单元格为空时给整行着色:=$C2=""。对应的预设是 新建规则 > 只为包含以下内容的单元格设置格式 > 空值。

没有金额的行
A1
ABCD
1OrderRegionAmountStatus
21001North120Paid
31002SouthOpen
41003North240Open
51004EastPaid
61005South150Open
71006East95Open
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

第 3 行和第 5 行被着色。在 C3 中输入金额,这一行就恢复原样。这里用 =ISBLANK($C2) 也可以,但对于包含返回 "" 的公式的单元格,ISBLANK 为 FALSE,而 =$C2="" 对两种情况都为 TRUE。

统计规则着色的数量

规则本身不会给出数字,但把同样的条件放进 COUNTIFS 或 SUMPRODUCT 就可以。统计上一节中逾期的未完成订单(日期在 G2 中)需要两个条件:Status 为 Open,且 Due 早于 G2。

统计逾期订单
G4
ABCDEFG
1OrderRegionAmountDueStatusToday
21001North1202026-03-02Paid2026-03-15
31002South852026-03-10Open
41003North2402026-03-12OpenOverdue
51004East602026-03-20Paid
61005South1502026-03-25Open
71006East952026-03-08Open
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 G4 中,统计到期日早于 G2 中日期的未完成订单数量。

答案是 3,也就是被着色的行数。条件 "<"&G2 把小于号和 G2 中的日期连接起来;写成 "<G2" 则是在与文本 G2 比较。更多此类条件的写法见 COUNTIFS 页面。

色阶、数据条和图标集

这三种格式按单元格的值来着色,而不是根据条件开关。选中数字,在 开始 > 条件格式 中选择一种:

  • 色阶 从最小值的一种颜色过渡到最大值的另一种颜色(图库中的第一个把最大值标为绿色、中间值标为黄色、最小值标为红色)。适合给一张数字表做热力图。
  • 数据条 在每个单元格内画一个条形,长度取决于它的值与其他值的相对大小。在 其他规则 中可以勾选 仅显示数据条 来隐藏数字。
  • 图标集 在值前面加上箭头、旗帜或交通灯,默认按区域的三等分划分。

要修改任意一种的阈值,打开 开始 > 条件格式 > 管理规则 > 编辑规则,在那里可以把每种颜色或图标与数字、百分比、百分点值或公式关联起来。

常见错误:美元符号用错了

同一条规则的三个版本应用到 A2:E7 上,效果完全不同:

规则每个单元格检查什么结果
=$C2>100本行的 C 列按金额给整行着色
=C2>100自己右边第二列的单元格:A2 检查 C2,B2 检查 D2只有 A 列跟随金额变化;B 列和 C 列始终着色(日期和文本都算大于 100),D 列和 E 列从不着色
=$C$2>100始终是 C2所有行都着色,或者都不着色
误把行列都锁定了
A1
ABCDE
1OrderRegionAmountDueStatus
21001North1202026-03-02Paid
31002South852026-03-10Open
41003North2402026-03-12Open
51004East602026-03-20Paid
61005South1502026-03-25Open
71006East952026-03-08Open
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

因为 C2 是 120,所以每个单元格都被着色。把 C2 改成 50,所有颜色会同时消失。点击规则,删掉 2 前面的 $,改成 =$C2>100,颜色就又会按每一行变化了。向下填充公式时锁定哪一部分也遵循同样的规则,详见绝对引用页面。

常见问题

如何根据另一个单元格设置条件格式?

选中要着色的单元格,打开“开始 > 条件格式 > 新建规则 > 使用公式确定要设置格式的单元格”,为选区的第一个单元格写公式,并指向另一个单元格:=$C2>100 会在该行 C 列的值大于 100 时给整行着色。

如何用条件格式突出显示整行?

选中整个表格,而不是某一列,并在要检查的单元格的列字母前加 $:=$E2="Open"。列保持固定,行号随之移动,所以同一行中的每个单元格都检查同一个单元格。

条件格式如何设置多个条件?

在一条公式规则中用 AND 或 OR 把它们组合起来:=AND($E2="Open",$D2<TODAY()) 会给已过到期日的未付订单着色。同一区域上的多条独立规则会同时生效;当两条规则设置同一种格式(例如填充色)时,在“开始 > 条件格式 > 管理规则”中排在上面的那条优先。

如何突出显示包含特定文本的单元格?

使用“开始 > 条件格式 > 突出显示单元格规则 > 文本包含”,或者写一条公式规则 =ISNUMBER(SEARCH("late",A2)),只要 A2 中包含 late(不分大小写)就为 TRUE。

为什么我的条件格式公式不起作用?

通常是美元符号的问题:=$C$2>100 让每个单元格都只检查 C2,而在整行上用 =C2>100 会让每个单元格检查不同的列。另外,还要确认公式是按照“管理规则”中“应用于”所列区域的第一个单元格来写的。

Coddy 编程语言插图

和 Coddy 一起学编程

开始