#NAME? 表示 Excel 不认识你公式中的某个词。最常见的是函数名拼错了:把 =SUM(B2:B6) 写成了 =SUMM(B2:B6)。其他原因还有:文本没加引号、区域中漏了冒号、使用了从未定义过的名称,以及你的 Excel 版本没有这个函数。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Product | Price | Total | Lookup | |
| 2 | Apple | 1.2 | #NAME? | #NAME? | |
| 3 | Pear | 1.5 | |||
| 4 | Plum | 0.8 | |||
| 5 | Bread | 2.4 | |||
| 6 | Milk | 1.1 |
#NAME? Excel 不认识这个公式中的某个名称。请检查函数的拼写。点击 D2,把 SUMM 改成 SUM:合计就出现了(7)。再把 E2 中的 VLOKUP 改成 VLOOKUP,它会返回 Pear 的价格 1.5。
在 Excel 中快速发现拼写错误的方法:用小写输入函数名。按下 Enter 后,Excel 会把它认识的名称变成大写(=sum(b2:b6) 变成 =SUM(B2:B6))。仍然是小写的名称,就是 Excel 不认识的。从输入时出现的列表中选择函数(按 Tab 插入),可以避免大多数拼写错误。
IF 公式中的 #NAME?:文本没加引号
公式中的文本必须放在英文直双引号中。没有引号时,Excel 会把 Pass 当作某个东西的名称,然后找不到它。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Student | Score | Without quotes | With quotes |
| 2 | Ana | 72 | #NAME? | Pass |
| 3 | Ben | 45 | Fail | |
| 4 | Cy | 88 | Pass | |
| 5 | Dee | 50 | Pass |
#NAME? Excel 不认识这个公式中的某个名称。请检查函数的拼写。C2 显示 #NAME?。D2 是加了引号的同一个公式,对每个学生都能正常工作。文本条件也是同样的规则:=COUNTIF(A2:A6,North) 返回 #NAME?,=COUNTIF(A2:A6,"North") 才能计数。数字、单元格引用和 TRUE/FALSE 永远不加引号(见 IF 函数)。
弯引号也会导致同样的错误。从网页、邮件或 Word 中复制的公式,常常是 “Pass” 而不是 "Pass"。Excel 不会把弯引号当作引号:
=IF(B2>=50,“Pass”,“Fail”) #NAME?
=IF(B2>=50,"Pass","Fail") Pass
删掉每个弯引号,在 Excel 中重新输入。
区域中漏了冒号
B2B6 不是区域,而是一个词,Excel 会去找名为 B2B6 的名称。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Month | Sales | Total | |
| 2 | Jan | 120 | #NAME? | |
| 3 | Feb | 95 | ||
| 4 | Mar | 140 | ||
| 5 | Apr | 110 |
#NAME? Excel 不认识这个公式中的某个名称。请检查函数的拼写。点击 D2,加上冒号,让公式变成 =SUM(B2:B5),它就返回 465。
从未定义过的名称
公式可以用 TaxRate 这样的名称代替单元格,但前提是这个名称已经存在。如果它从未创建、已被删除或拼写不同,公式就会返回 #NAME?。
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Item | Price | With a name | With a cell | Tax rate | |
| 2 | Desk | 240 | #NAME? | 288 | 20% | |
| 3 | Chair | 85 | 102 | |||
| 4 | Lamp | 40 | 48 |
#NAME? Excel 不认识这个公式中的某个名称。请检查函数的拼写。C2 引用了 TaxRate,而这个工作簿中没有这个名称。D2 改为指向 F2,就能正常工作:Desk 的结果是 288。$ 让公式向下填充时 F2 保持不变。
要在 Excel 中创建这个名称,选中 F2,在名称框(A 列上方、编辑栏左边的框)中输入 TaxRate 并按 Enter,或者使用 公式 > 定义名称。公式 > 名称管理器 会列出工作簿中的每个名称、它指向的位置,以及因为单元格被删除而指向 #REF! 的名称。名称还有作用范围:只为 Sheet1 定义的名称,在 Sheet2 中使用会得到 #NAME?。
函数对你的 Excel 来说太新
对于自己没有的函数,Excel 都会显示 #NAME?。文件能正常打开,但所有使用较新函数的公式都会出错。在编辑栏中,Excel 2019 及更早版本会给这类函数加上 _xlfn. 前缀:
=_xlfn.XLOOKUP(E2,A2:A6,B2:B6) #NAME? in Excel 2019
=INDEX(B2:B6,MATCH(E2,A2:A6,0)) works in every version
| 函数 | 需要的版本 |
|---|---|
| IFS、SWITCH、MAXIFS、MINIFS、CONCAT、TEXTJOIN | Excel 2019 或更高版本 |
| XLOOKUP、XMATCH、FILTER、UNIQUE、SORT、SORTBY、SEQUENCE、LET | Excel 2021 或 Microsoft 365 |
| TEXTSPLIT、TEXTBEFORE、TEXTAFTER、VSTACK、HSTACK、TAKE、DROP | Excel 2024 或 Microsoft 365 |
| REGEXTEST、REGEXEXTRACT、GROUPBY、PIVOTBY | 仅 Microsoft 365 |
如果打开你文件的人使用的是较旧的 Excel,就只用较旧的函数,或者把结果以值的形式发给他们(复制,然后 开始 > 粘贴 > 值)。网页版 Excel 有最新的函数。Google 表格认识其中大部分函数,名称也相同。来自加载项的函数(例如欧元工具中的 EUROCONVERT,或公司内部的加载项)在加载项未启用时也会显示 #NAME?:在 文件 > 选项 > 加载项 中启用它(Mac 上是 工具 > Excel 加载项)。
修复显示 #NAME? 的 COUNTIF
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Order | Region | Amount | North orders | |
| 2 | 1001 | North | 250 | ||
| 3 | 1002 | South | 120 | ||
| 4 | 1003 | East | 310 | ||
| 5 | 1004 | North | 90 | ||
| 6 | 1005 | North | 140 | ||
| 7 | 1006 | West | 75 |
轮到你了: 公式 =COUNTIF(B2:B7,North) 返回 #NAME?,因为 North 没有加引号。在 E2 中写一个能正常工作的版本,统计 North 的订单数。
如果要统计的文本在某个单元格中,就引用这个单元格并去掉引号:G1 中是 North 时,用 =COUNTIF(B2:B7,G1)。引用永远不需要引号,而且 G1 改变时公式依然有效。
常见问题
Excel 中的 #NAME? 是什么意思?
Excel 在公式中发现了一个既不是函数、也不是已定义名称或单元格引用的词。常见原因是函数名拼错(=SUMM(B2:B6))、文本没加引号(=IF(B2>50,Pass,Fail)),以及当前安装的 Excel 版本没有这个函数。
Excel 中的 XLOOKUP 为什么显示 #NAME??
XLOOKUP 需要 Excel 2021 或 Microsoft 365。Excel 2019 及更早版本不认识它,会显示 #NAME?,并把公式显示为 =_xlfn.XLOOKUP(...)。在这些版本中请改用 =INDEX(C2:C6,MATCH(E2,A2:A6,0))。
公式明明是对的,为什么还显示 #NAME??
检查一下是不是从网页或文字处理软件复制了引号。像 “Pass” 这样的弯引号在 Excel 中不是文本的定界符,所以引号里的词会被当成名称。在 Excel 中把引号重新输入为直引号 "Pass"。
怎样找出工作簿中所有的 #NAME? 错误?
按 Ctrl+G(Mac 上按 Control+G),点击 定位条件,选择 公式,只保留 错误 的勾选,然后点击 确定。Excel 会选中当前工作表中所有出错的公式单元格;对每张工作表重复一遍。公式 > 名称管理器 > 筛选 > 有错误的名称 会列出已经失效的已定义名称。