Menu

Excel #NAME? 错误:原因及解决方法

#NAME? 表示 Excel 不认识公式中的某个词:拼错的函数名(例如 =SUMM(B2:B6))、没加引号的文本、区域中漏了冒号、未定义的名称,或者你的 Excel 版本没有的函数。

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

#NAME? 表示 Excel 不认识你公式中的某个词。最常见的是函数名拼错了:把 =SUM(B2:B6) 写成了 =SUMM(B2:B6)。其他原因还有:文本没加引号、区域中漏了冒号、使用了从未定义过的名称,以及你的 Excel 版本没有这个函数。

拼错的函数名
D2
ABCDE
1ProductPriceTotalLookup
2Apple1.2#NAME?#NAME?
3Pear1.5
4Plum0.8
5Bread2.4
6Milk1.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 当作某个东西的名称,然后找不到它。

文本需要加引号
C2
ABCD
1StudentScoreWithout quotesWith quotes
2Ana72#NAME?Pass
3Ben45Fail
4Cy88Pass
5Dee50Pass
#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 的名称。

两个单元格之间的冒号
D2
ABCD
1MonthSalesTotal
2Jan120#NAME?
3Feb95
4Mar140
5Apr110
#NAME? Excel 不认识这个公式中的某个名称。请检查函数的拼写。

点击 D2,加上冒号,让公式变成 =SUM(B2:B5),它就返回 465。

从未定义过的名称

公式可以用 TaxRate 这样的名称代替单元格,但前提是这个名称已经存在。如果它从未创建、已被删除或拼写不同,公式就会返回 #NAME?。

未定义的名称与单元格引用
C2
ABCDEF
1ItemPriceWith a nameWith a cellTax rate
2Desk240#NAME?28820%
3Chair85102
4Lamp4048
#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、TEXTJOINExcel 2019 或更高版本
XLOOKUP、XMATCH、FILTER、UNIQUE、SORT、SORTBY、SEQUENCE、LETExcel 2021 或 Microsoft 365
TEXTSPLIT、TEXTBEFORE、TEXTAFTER、VSTACK、HSTACK、TAKE、DROPExcel 2024 或 Microsoft 365
REGEXTEST、REGEXEXTRACT、GROUPBY、PIVOTBY仅 Microsoft 365

如果打开你文件的人使用的是较旧的 Excel,就只用较旧的函数,或者把结果以值的形式发给他们(复制,然后 开始 > 粘贴 > 值)。网页版 Excel 有最新的函数。Google 表格认识其中大部分函数,名称也相同。来自加载项的函数(例如欧元工具中的 EUROCONVERT,或公司内部的加载项)在加载项未启用时也会显示 #NAME?:在 文件 > 选项 > 加载项 中启用它(Mac 上是 工具 > Excel 加载项)。

修复显示 #NAME? 的 COUNTIF

统计 North 的订单数
E2
ABCDE
1OrderRegionAmountNorth orders
21001North250
31002South120
41003East310
51004North90
61005North140
71006West75
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 公式 =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 会选中当前工作表中所有出错的公式单元格;对每张工作表重复一遍。公式 > 名称管理器 > 筛选 > 有错误的名称 会列出已经失效的已定义名称。

Coddy 编程语言插图

和 Coddy 一起学编程

开始