Table of contents
在你的工作表中有很多#N/A的错误,并且很想知道是否有办法显示一个自定义的文本? IFNA公式是你需要的解决方案。
当一个Excel公式不能识别或找到某些东西时,它会抛出#N/A错误。 为了捕捉这样的错误,并用一个用户友好的信息来取代它,你可以使用IFNA函数。 换句话说,#N/A是Excel的方式,表示你正在寻找的值不存在于引用的数据集中。 IFNA是你捕获和处理这个错误的方式。
Excel中的IFNA函数
Excel的IFNA函数是用来捕捉和处理#N/A错误的。 如果一个公式评估为#N/A,IFNA会捕捉这个错误,并用你指定的自定义值来替换它;否则会返回公式的正常结果。
IFNA语法
IFNA函数的语法如下。
IFNA(value, value_if_na)在哪里?
价值 (required) - 检查#N/A错误的公式、数值或参考。
价值_if_na (required) - 如果检测到#N/A错误,要返回的值。
使用说明
- IFNA函数只处理#N/A,不抑制任何其他错误。
- 如果 价值 参数是一个 阵列公式 ,IFNA返回一个结果数组,每个单元格一个,如本例所示。
IFNA的可用性
IFNA函数是在Excel 2013中引入的,并在所有后续版本中可用,包括Excel 2016、Excel 2019、Excel 2021和Microsoft 365。
在早期版本中,你可以通过同时使用IF和ISNA函数来捕捉#N/A错误。
如何在Excel中使用IFNA函数
为了在Excel中有效地使用IFNA,请遵循这个通用方法。
- 在第一个参数( 价值 ),把一个受#N/A错误影响的公式。
- 在第二个参数( 价值_if_na ),输入你想返回的文本,而不是标准的错误符号。 如果没有发现任何东西,要返回一个空单元格,提供一个空字符串('"")。
返回 自定义文本 ,通用公式为。
IFNA( 公式 (), " 自定义文本 ")要返回一个 空白单元格 ,通用公式为。
IFNA( 公式 (), "")让我们在一个简单的例子中看看它是如何工作的。 在下表中,假设你想知道某个学生的分数在其他学生中的排名。 由于数据是按 分数 为了得到这个位置,你可以使用MATCH函数的最简单形式。
=match(e1, a2:a10, 0)
因为查询值(Neal)在查询数组(A2:A10)中不可用,所以发生#N/A错误。
遇到这种错误,没有经验的用户可能会认为公式有问题,而你作为工作簿创建者会收到很多问题。 为了避免这种情况,你可以明确指出公式是正确的,只是找不到要求它寻找的值。 因此,你在IFNA的第一个参数中嵌套MATCH公式,在第二个参数中,输入你的自定义文本,在我们的案例中是 "未找到"。
=IFNA(MATCH(E1, A2:A10, 0), "未找到")
现在,你自己的文本显示在一个单元格中,而不是标准的错误符号,通知用户查询值不存在于数据集中。
如何用VLOOKUP使用IFNA
大多数情况下,#N/A错误发生在查找东西的函数中,如VLOOKUP、HLOOKUP、LOOKUP和MATCH。 下面的例子涵盖了一些典型的使用情况。
例1.基本的IFNA VLOOKUP公式
为了捕捉VLOOKUP无法找到匹配时发生的#N/A错误,可以使用IFNA检查其结果,并指定要显示的值,而不是错误。 通常的做法是使用这种语法将IFNA函数包在你现有的VLOOKUP公式中。
ifna(vlookup(), " 您的文本 ")在我们的示例表中,假设你想检索一个特定学生(E1)的分数。 为此,你要使用这个经典的VLOOKUP公式。
=vlookup(e1, a2:b10, 2, false)
问题是,尼尔没有参加考试,因此他的名字不在列表中,显然VLOOKUP未能找到匹配。
为了隐藏错误,我们用IFNA这样的方式来包装VLOOKUP。
=IFNA(VLOOKUP(E1, A2:B10, 2, FALSE), "没有参加考试" )
现在,这个结果对用户来说并不那么令人生畏,而且信息量更大。
例2.IFNA VLOOKUP在多个工作表上进行查询
IFNA功能还可以用来执行所谓的 连续的 或 被锁住的 其原理是,你用这种方式将几个不同的IFNA(VLOOKUP(...))公式嵌套到另一个公式中。
IFNA(VLOOKUP(...), IFNA(VLOOKUP(...), IFNA(VLOOKUP(...), "未发现"))如果一个主要的VLOOKUP没有找到任何东西,它的IFNA函数会运行下一个VLOOKUP,直到找到所需的值。 如果所有的查找都失败了,该公式将返回指定的文本。
假设你将不同班级的分数列在不同的表上(名为 A级 , B类 ,以及 C级 你的目标是获得某位学生的分数,他的名字被输入到当前工作表的B1单元格中。 为了完成任务,请使用这个公式。
=IFNA(VLOOKUP(B1, 'Class A'!A2:B5, 2, FALSE), IFNA(VLOOKUP(B1, 'Class B'!A2:B5, 2, FALSE), IFNA(VLOOKUP(B1, 'Class C'!A2:B5, 2, FALSE), "未找到") )
该公式按照VLOOKUP的嵌套顺序,在三个不同的工作表中依次查找指定的名称,并带来第一个找到的匹配。
例3.带有INDEX MATCH的IFNA
以类似的方式,IFNA可以捕捉由其他查找函数产生的#N/A错误。 作为一个例子,让我们把它和INDEX MATCH公式一起使用。
=IFNA(INDEX(B2:B10, MATCH(E1, A2:A10, 0)), "未找到")
公式的要点与之前所有的例子相同--INDEX MATCH执行查找,IFNA评估结果,如果没有找到引用的值,则捕获一个#N/A错误。
IFNA将返回多个结果
如果内部函数(即放置在 价值 参数)返回多个值,IFNA将单独测试每个返回的值,并输出一个结果数组。 例如。
=IFNA(VLOOKUP(D2:D4, A2:B10, 2, FALSE), "未找到" )
在动态阵列Excel(Microsoft 365和Excel 2021)中,最上面的单元格(E2)中的常规公式会自动溢出邻近单元格中的所有结果(就Excel而言,它被称为溢出区域)。
在前动态版本(Excel 2019及以下版本)中,可以通过使用多单元格数组公式实现类似的效果,通过Ctrl + Shift + Enter快捷键完成。
IFNA和IFERROR之间有什么区别?
根据问题的根本原因,Excel公式可以触发不同的错误,如#N/A、#NAME、#VALUE、#REF、#DIV/0、#NUM等。 IFERROR函数可以捕捉所有这些错误,而IFNA只限于#N/A。 选择哪一个更好? 这取决于情况。
如果你想压制 任何种类的错误 在复杂的计算中,当一个公式包括几个可能产生不同错误的函数时,它特别有用。
与 查询功能 你最好使用IFNA,因为它只在找不到查询值时显示一个自定义的结果,而不会隐藏公式本身的潜在问题。
为了说明这个区别,让我们把基本的IFNA VLOOKUP公式拿出来,"不小心 "把函数的名字拼错了(VLOKUP而不是VLOOKUP)。
=IFNA(VLOKUP(E1, A2:B10, 2, FALSE), "没有参加考试" )
IFNA并没有抑制这个错误,所以你可以清楚地看到其中一个函数名称出了问题。
现在,让我们看看如果你使用IFERROR会发生什么。
=IFERROR(VLOKUP(E1, A2:B10, 2, FALSE), "没有参加考试" )
嗯......它说奥利维亚没有参加考试,这不是真的!这是因为IFERROR函数捕获了#NAME? 的错误,而返回自定义文本。 在这种情况下,它不仅返回错误的信息,而且还掩盖了公式的问题。
这就是如何在Excel中使用IFNA公式。 感谢你的阅读,期待下周在我们的博客上见到你
可用的下载
Excel IFNA公式实例(.xlsx文件)。