Excel ISNA 函数

2025年03月17日 | 阅读 9 分钟

Microsoft Excel 是一款强大的电子表格软件,允许用户记录大量数据并使用许多内置函数执行各种操作。在使用 Excel 工作表中的函数和公式时,各种情况可能导致我们遇到一些错误代码而不是期望的结果。但是,在处理大型数据集时,直接用眼睛识别或检测这些错误可能会很困难。这时,现有的 ISNA 函数就很有用,可以帮助我们识别或检测工作表中的特定类型错误。

本文简要介绍了 Excel ISNA 函数,包括其语法、目的和在 Excel 工作表中的使用方法。我们讨论了一些相关示例,以帮助我们更好地理解如何在 Excel 中为各种常见场景使用 ISNA 函数。

Excel 中的 ISNA 函数是什么?

ISNA 函数是一个内置的错误处理 Excel 函数,属于信息函数类别。该函数在查找或处理工作表中的 #N/A 错误方面特别有用。简单来说,Excel 中的 ISNA 函数帮助我们识别给定的数据集、函数或公式是否存在 #N/A 错误。该函数可以更轻松地进行平滑的比较和数据分析,并有助于相应地修复错误。

Excel ISNA Function

此外,ISNA 函数可以与其他相关函数(如 IF 或 VLOOKUP 函数)结合使用,以在工作表中的记录数据集上执行其他操作。

Excel ISNA 函数的语法

Excel 中 ISNA 函数的语法定义如下:

=ISNA(value)

'value' 是 ISNA 函数唯一需要的参数或变量。

Excel ISNA 函数的参数/变量

如前所述的语法所示,Excel 中的 ISNA 函数只需要一个参数,例如:

  • Value:这是一个灵活的、必需的参数,表示要测试 #N/A 错误的数。它可以是另一个函数、公式、单元格、范围或直接的值。通常,'value' 以单元格地址/引用或范围的形式给出。

Excel ISNA 函数返回什么?

Excel 中的 ISNA 函数返回一个逻辑值,即 TRUE 或 FALSE。

  • TRUE:仅当给定的 'value' 参数存在 #N/A 错误时,函数才返回 TRUE。
  • FALSE:如果给定的 'value' 参数未找到 #N/A 错误,则函数返回 FALSE。在这种情况下,给定的参数可能包含其他值或错误类型。

例如,请看下表,其中确定了 ISNA Excel 函数对不同数据集(参数)的行为方式:

数据公式返回值描述
#N/A=ISNA(#N/A)TRUE由于给定的值为 #N/A 错误,ISNA 函数返回 TRUE。
#DIV/0!=ISNA(#DIV/0!)FALSE尽管提供的值是 Excel 错误,但它不是 #N/A 错误。因此,ISNA 函数返回 FALSE。
#NAME?=ISNA(#NAME?)FALSE由于给定的值不是 #N/A 错误,ISNA 函数返回 FALSE。
文本=ISNA(Text)FALSEISNA 函数不识别文本值作为有效参数,并返回 FALSE。

如何在 Excel 中使用 ISNA 函数?

最好通过使用示例数据集在 Excel 工作表中使用 ISNA 函数来完全理解此函数。让我们来看以下示例,并在不同情况下使用 ISNA Excel 函数:

示例 1:通用的 ISNA 函数

如上表所示,我们以纯粹的形式使用了 ISNA 函数。然而,ISNA 函数更常通过与其他基本函数结合使用,来帮助评估我们工作表中相应公式的结果。在这种情况下,我们通常按以下方式应用 ISNA 函数:

=ISNA(another_formula() )

假设我们有一个示例数据集,其中包含两列学生姓名(A 列和 D 列)。A 列中的列表包含所有学生姓名,而 D 列仅包含考试不及格的学生。

Excel ISNA Function

我们需要比较这两个列表,并识别特定姓名仅存在于第一个列表还是同时存在于两个列表中。之后,我们需要使用 ISNA 函数来确定 A 列中的学生是否及格。

为了将第一个学生(A2 单元格)的姓名与 D 列中的每个相应姓名进行比较,我们可以按以下方式应用 MATCH 公式:

=MATCH(A2, $D$3:$D$8, 0)

此公式会将 A2 单元格的值与 D 列(从 D3 到 D8 单元格)进行匹配,如果值存在,则返回其相对位置。如果值不匹配,公式将返回 #N/A 错误。因此,我们可以将上述公式与 ISNA 函数结合或嵌套,当 MATCH 函数针对学生姓名显示 #N/A 错误时,它将返回 TRUE,这意味着相应的姓名不存在于不及格学生列表中。

我们可以按以下方式将 MATCH 公式嵌套到 ISNA 函数中:

=ISNA(MATCH(A2, $D$3:$D$8, 0))

我们将此公式应用于 B2 单元格,并将其复制到 B16 之前的其他单元格。

Excel ISNA Function

图像显示 ISNA 函数已返回布尔值 TRUE 和 FALSE。我们可以看到这里函数为未列在 B 列中的学生返回 TRUE。让我们来理解一下 ISNA 函数返回 TRUE 和 FALSE 时的工作原理:

  • TRUE:在 D 列中找不到学生姓名 > MATCH 函数返回 #N/A 错误 > ISNA 返回 TRUE。
  • FALSE:在 D 列中找到学生姓名 > MATCH 函数不返回错误 > ISNA 返回 FALSE。

示例 2:ISNA 函数与 IF 函数结合使用

如前所述,Excel ISNA 函数仅返回布尔值 TRUE 和 FALSE。但是,我们可以将 ISNA 函数与 IF 函数结合使用,以返回或显示自定义消息。这在一定程度上使 ISNA 函数的使用更加有效。在这种情况下,我们通常按以下方式应用 ISNA 函数:

=IF(ISNA(…),"message_if_error_exists", "message_if_no_error_exist")

让我们再次采用之前的示例数据集。但是,这次我们不显示布尔 TRUE 和 FALSE 结果,而是需要显示自定义消息。假设我们想为那些没有不及格(未在 D 列列出姓名)的学生显示“及格”的消息。我们想为其余学生显示“不及格”的消息。

Excel ISNA Function

首先,我们像前一个示例一样应用 MATCH 函数,然后将其嵌套在 ISNA 函数中。之后,我们将 ISNA MATCH 公式嵌入 IF 函数中,如下所示:

=IF(ISNA(MATCH(A2, $D$3:$D$8, 0)), "及格", "不及格")

与前一个示例一样,我们将公式应用于 B2 单元格,并将其复制或拖动到列中剩余的单元格,直到 B16。

Excel ISNA Function

与前一个示例相比,这次的结果看起来更好、更直观。

示例 3:ISNA 函数与 VLOOKUP 函数结合使用

Excel 中的 VLOOKUP 函数是最广泛使用的内置函数之一,它有助于我们将数据从一个列表提取到另一个工作表。但是,在 VLOOKUP 公式中出现 #N/A 错误非常常见。当函数在给定数据集中找不到查找值时,通常会发生此错误。

与其在结果单元格中显示 #N/A 错误,不如显示有意义的消息或空白更好。这将使我们的视觉表示有效且更专业。ISNA 函数在这种情况下非常有用。在 ISNA 函数与 VLOOKUP 函数结合后,它有助于确定给定数据集中是否存在 #N/A 错误。之后,我们可以将 ISNA 和 VLOOKUP 函数的组合公式嵌套在 IF 函数中,以替换 #N/A 错误并显示自定义消息。

ISNA 函数与 VLOOKUP 结合使用的语法定义如下:

=IF(ISNA(VLOOKUP(…),"custom_message", VLOOKUP(…))

当给定数据集中出现 #N/A 错误时,此公式将返回“custom_message”;否则,它将返回 VLOOKUP 函数获得的结果。

在我们的示例数据集中,假设我们想显示不及格学生的科目名称。对于其他及格的学生,我们需要显示自定义消息“全部及格”。

Excel ISNA Function

首先,我们需要按照以下语法构建经典的 VLOOKUP 公式:

=VLOOKUP (lookup_value, table_array, col_index_num, [range_lookup])

  • lookup_value:我们要查找的值,即学生姓名或相应的单元格引用。
  • table_array:包含查找值的范围,即 D3:E8。我们使用绝对引用 ($D$3:$E$8),以便在复制到其他单元格时引用不会更改。
  • col_index_num:从给定的 table_array(或范围)中必须检索匹配值的列号。
  • range_lookup:我们要查找的方式。必须使用 TRUE(或 1)进行近似匹配,使用 FALSE(或 0)进行精确匹配。

因此,我们使用以下 VLOOKUP 公式查找所需的科目:

=VLOOKUP(A2, $D$3:$E$8, 2, FALSE)

之后,我们将此 VLOOKUP 公式与前一个示例中讨论的通用 IF-ISNA 公式结合。因此,我们的整个公式将变为:

=IF(ISNA(VLOOKUP(A2, $D$3:$E$8, 2, FALSE)), "全部及格", VLOOKUP(A2, $D$3:$E$8, 2, FALSE))

我们将此公式应用于我们的第一个结果单元格 B2,并将其复制到剩余的单元格,直到 B16。

Excel ISNA Function

上图显示了不及格学生的科目名称。对于其他人,我们看到了自定义消息“全部及格”。现在,将“全部及格”自定义消息替换为破折号 (-)。这更能有效地突出我们期望的结果,如下所示:

Excel ISNA Function

示例 4:使用 SUMPRODUCT 函数的 ISNA 函数来计算 #N/A 错误

ISNA 函数可以与 SUMPRODUCT 函数结合使用,以确定在我们的工作表中某个范围中 #N/A 错误发生了多少次。在这种情况下,我们可以按以下方式连接各自的函数:

=SUMPRODUCT(--ISNA(range))

如前所述,ISNA 函数仅返回布尔结果 TRUE 和 FALSE。但是,这里的双重否定 (--) 会将逻辑值评估为 1 和 0,而 SUMPRODUCT 函数会相应地将结果相加。

例如,让我们再次使用示例数据集。

Excel ISNA Function

假设我们想找出通过考试的学生人数。因此,我们首先在列 B(B2 到 B16 单元格)中应用 MATCH 和 ISNA 函数的组合公式,类似于第一个示例。

Excel ISNA Function

在得到上述公式的 TRUE 和 FALSE 结果后,我们按以下方式修改适用于一系列查找值(A2:A16)的 MATCH 公式:

=MATCH(A2:A16, D3:D8, 0)

上述公式将比较 A 列和 D 列中的学生姓名,如果姓名存在于 A 列但不在 D 列中,则函数将返回 #N/A 错误。

接下来,我们在将其应用于结果单元格 B18 之前,将公式嵌套在 ISNA 函数和 SUMPRODUCT 中,如下所示:

=SUMPRODUCT(--ISNA(MATCH(A2:A16, D3:D8, 0)))

该公式返回 9,这意味着有九名学生通过了考试。

Excel ISNA Function

在这里,MATCH 函数返回九个 #N/A 错误,因为它在 D 列中的不及格学生列表中找不到 9 名学生的名字。ISNA 函数识别 #N/A 错误,并为相应的值返回 TRUE,然后将其强制转换为 1。最后,SUMPRODUCT 将所有 1 加起来,返回 9。

要记住的重要事项

  • ISNA 函数还将空白(空)单元格包含在给定的数据集中,并相应地返回 FALSE,因为在空单元格中未找到 #N/A 错误。
  • 需要注意的是,Excel 中的 ISNA 函数不能帮助我们定位工作表中 #N/A 错误所在的位置。相反,它只告诉我们给定的字段中是否存在 #N/A 错误。
  • 除了 IF-ISNA 与 VLOOKUP 的组合外,我们还可以使用 Excel 的 IFNA 函数与 VLOOKUP 来捕获和处理 #N/A 错误并显示自定义消息。这有助于使公式更短、更易于理解。但是,IFNA 函数仅在 Excel 2013 及更高版本中可用。
  • 在 Excel 365、2021 及更高版本中,我们可以利用 XLOOKUP 函数而不是 IF-ISNA-VLOOKUP 的组合。XLOOKUP 函数可以原生处理 #N/A 错误,并在需要时显示自定义消息。