B2 为空时 =ISBLANK(B2) 返回 TRUE,否则返回 FALSE。B2 中是数字时 =ISNUMBER(B2) 返回 TRUE。这些 IS 类函数回答的是关于单元格的一个“是或否”的问题,它们通常作为 IF 中的判断条件:=IF(ISBLANK(B2),"Missing","OK")。
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | What | Value | ISBLANK | ISNUMBER | ISTEXT | ISERROR |
| 2 | Number | 120 | FALSE | TRUE | FALSE | FALSE |
| 3 | Text | Apple | FALSE | FALSE | TRUE | FALSE |
| 4 | Empty cell | TRUE | FALSE | FALSE | FALSE | |
| 5 | Number as text | 42 | FALSE | FALSE | TRUE | FALSE |
| 6 | Date | 2026-03-15 | FALSE | TRUE | FALSE | FALSE |
| 7 | Logical | TRUE | FALSE | FALSE | FALSE | FALSE |
| 8 | Error | #DIV/0! | FALSE | FALSE | FALSE | TRUE |
逐行横向看。有几个结果会让人意外:
- 日期是数字。Excel 把日期存储为天数,所以对 2026-03-15,
ISNUMBER为 TRUE。 '42看起来像数字,但它是文本,所以 ISNUMBER 为 FALSE,ISTEXT 为 TRUE。导入的数据经常是这样。- TRUE 既不是数字也不是文本,所以第 7 行的四列都是 FALSE;检测它要用 ISLOGICAL。
在 B5 中输入 42(不带撇号),这一行就会变成 ISNUMBER 为 TRUE。
ISBLANK 与 ="":返回 "" 的公式不算空
只有什么都没有的单元格,ISBLANK 才为 TRUE。公式返回 "" 的单元格(例如 =IF(C2="","",C2*D2))看起来是空的,但里面有公式,所以 ISBLANK 返回 FALSE。与 "" 比较则会把两者都当作空:
B2 is empty, B3 holds =""
=ISBLANK(B2) TRUE
=ISBLANK(B3) FALSE
=B2="" TRUE
=B3="" TRUE
下面的表格用会把 "" 当作空的判断方法,比较了空单元格、"" 公式、空格和零:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | What | Value | Equals "" | LEN |
| 2 | Empty cell | TRUE | 0 | |
| 3 | Formula returning "" | TRUE | 0 | |
| 4 | A space | FALSE | 1 | |
| 5 | Zero | 0 | FALSE | 1 |
| 6 | Count blank | 2 |
对于公式单元格,B3="" 为 TRUE,LEN 为 0,B6 中的 COUNTBLANK 计数为 2,即空单元格和 ""。第 4 行的空格按这些判断都不算空(LEN 为 1);如果只含空格的单元格也应该算作空,就用 =TRIM(B4)="" 判断。零也不算空。所以当一列由返回 "" 的公式填充时,要用 ="" 或 <>"" 判断,而不是 ISBLANK。
判断单元格是否包含某段文本:ISNUMBER(SEARCH())
Excel 没有 CONTAINS 函数。SEARCH 返回某段文本开始的位置,找不到时返回 #VALUE!。ISNUMBER 把它变成 TRUE 或 FALSE:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Product | Contains laptop | Case-sensitive | |
| 2 | Pro Laptop 14 | Yes | No | |
| 3 | Mouse | No | No | |
| 4 | Laptop stand | Yes | No | |
| 5 | USB cable | No | No | |
| 6 | laptop bag | Yes | Yes |
SEARCH 不区分大小写,所以在 C 列中“Laptop”和“laptop”都能匹配。FIND 区分大小写,所以 D 列只匹配“laptop bag”。把 A3 改成 Gaming laptop,两列都会显示 Yes。FIND 和 SEARCH 页面 详细介绍了这两个函数;如果要统计匹配的单元格个数而不是逐个标记,用 =COUNTIF(A2:A6,"*laptop*")。
ISERROR、ISERR 和 ISNA
有三个函数用来检测错误,它们的区别在于对 #N/A 的处理:
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | What | Value | ISERROR | ISNA | ISERR |
| 2 | Not found | #N/A | TRUE | TRUE | FALSE |
| 3 | Divide by 0 | #DIV/0! | TRUE | FALSE | TRUE |
| 4 | Bad argument | #NUM! | TRUE | FALSE | TRUE |
| 5 | Text in math | #VALUE! | TRUE | FALSE | TRUE |
| 6 | A number | 42 | FALSE | FALSE | FALSE |
ISERROR 对这四种错误都为 TRUE。ISNA 只对 #N/A 为 TRUE,这是查找函数找不到值时返回的错误。ISERR 正好相反:对除 #N/A 以外的所有错误为 TRUE。如果要替换错误而不是检测它,=IFERROR(B2,0) 比 =IF(ISERROR(B2),0,B2) 更简短;见 IFERROR 页面。
ISEVEN 和 ISODD
偶数时 =ISEVEN(B2) 为 TRUE,奇数时 =ISODD(B2) 为 TRUE。零是偶数,负数也可以使用,小数会先被截取为整数,所以 2.5 按 2 计算:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Item | Number | ISEVEN | ISODD |
| 2 | A | 4 | TRUE | FALSE |
| 3 | B | 7 | FALSE | TRUE |
| 4 | C | 0 | TRUE | FALSE |
| 5 | D | -3 | FALSE | TRUE |
| 6 | E | 2.5 | TRUE | FALSE |
文本值会得到 #VALUE!。要区分偶数行和奇数行,例如做隔行着色或“每隔一行”的规则,用 =ISEVEN(ROW())。
练习:名称中是否包含“pro”?
| A | B | |
|---|---|---|
| 1 | Product | Pro model |
| 2 | Laptop Pro 14 | |
| 3 | Office Chair | |
| 4 | Monitor PRO 27 | |
| 5 | Desk Lamp |
轮到你了: 在 B2 中判断:A2 中的商品名称包含“pro”(不区分大小写)时显示 "Yes",否则显示 "No"。公式向下填充到 B5。
该用哪个 IS 函数
| 函数 | 值为以下内容时返回 TRUE |
|---|---|
ISBLANK | 空单元格(不包括 ""、空格和 0) |
ISNUMBER | 数字,包括日期、时间和百分比 |
ISTEXT | 文本,包括以文本形式存储的数字和 "" |
ISNONTEXT | 任何非文本的内容,包括空单元格 |
ISLOGICAL | TRUE 或 FALSE |
ISERROR | 任何错误 |
ISERR | 除 #N/A 以外的任何错误 |
ISNA | 仅 #N/A |
ISEVEN / ISODD | 偶数 / 奇数 |
ISFORMULA | 包含公式的单元格 |
ISREF | 单元格引用 |
如果对看起来像数字的值,=ISNUMBER(B2) 却返回 FALSE,说明它们是以文本形式存储的,SUM 也会跳过它们。先修正数据(文本转数字页面 介绍了方法),IS 判断和合计就一致了。
常见问题
看起来是空的单元格,ISBLANK 为什么返回 FALSE?
单元格里有你看不见的东西:返回空文本的公式(="")、一个空格或一个撇号。只有真正空着的单元格,ISBLANK 才为 TRUE。要把 "" 也当作空,改用 =B2="" 或 =LEN(B2)=0 判断。
怎样在 Excel 中判断单元格是不是数字?
用 =ISNUMBER(B2)。数字、日期或百分比返回 TRUE,文本返回 FALSE,包括 '42 这样以文本形式存储的数字。放在 IF 中:=IF(ISNUMBER(B2),B2*2,"Not a number")。
ISERROR、ISERR 和 ISNA 有什么区别?
ISERROR 对任何错误都为 TRUE。ISNA 只对 #N/A 为 TRUE。ISERR 对除 #N/A 以外的所有错误为 TRUE。如果要替换错误而不是检测它,用 IFERROR 或 IFNA。
明明是数字,ISNUMBER 为什么返回 FALSE?
这个数字是以文本形式存储的,导入的数据经常出现这种情况:单元格显示 42,但里面是文本“42”,通常左对齐并带有一个绿色小三角。=ISTEXT(B2) 对它返回 TRUE。用 VALUE 或 --B2 把它转换成数字。
怎样在 Excel 中写“如果不为空”的 IF?
判断是否不等于空文本:=IF(B2<>"","Filled","Empty"),或者 =IF(NOT(ISBLANK(B2)),"Filled","Empty")。前一种写法还会把返回 "" 的公式也当作空。