Excel函数VLOOKUP和ISNA使用技巧

对于程序员来说,遇到需要数据处理的情况,首先想到写代码实现。其实如果熟悉Excel的一些公式的话,可以非常方便的使用这些公式实现。最近就遇到一个问题,里面涉及到在Excel表中查找数据,并判断该数据对应字段的值,并更新回源数据。简单来说如果要使用代码实现的话,大概要写读Excel文件、for循环、判断、更新源数据字典、最后写回Excel文件。但是如果使用Excel中的固定函数,就特别简单。大致用到IF、ISNA、VLOOKUP三个函数。

案例

如图所示,甲方提供了两张表,第一张人员表中包含了工号,姓名、性别、年龄。第二张表中只记录了工号和是否缴费的记录。现在要求根据第二张表中的缴费记录,更新第一张表中对应工号的报名情况。

图中黄色部分是我们通过使用函数,在第二张表中判断对应缴费情况最后回填的内容。这里使用到的函数为:

=IF(ISNA(VLOOKUP(B10,Sheet1!$H$10:$I$18,2,FALSE))=TRUE,"未报名","已报名")

说明

IF函数:
根据对指定的条件计算结果为 TRUE 或 FALSE,返回不同的结果。可以使用 IF 对数值和公式执行条件检测。语法:

IF(logical_test,value_if_true,value_if_false)

ISNA函数:
ISNA属于IS类函数,它是用来检验数值或引用类型的九个工作表函数之一。这些IS类函数,可以检验数值的类型并根据参数取值返回 TRUE 或 FALSE。例如,如果数值为对空白单元格的引用,函数 ISBLANK 返回逻辑值 TRUE,否则返回 FALSE。以下九个工作表函数当满足条件时返回TRUE,可以与IF函数配合使用,非常方便。

  • ISBLANK(value) 值为空白单元格。
  • ISERR(value) 值为任意错误值(除去 #N/A)。
  • ISERROR(value) 值为任意错误值(#N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME? 或 #NULL!)。
  • ISLOGICAL(value) 值为逻辑值。
  • ISNA(value) 值为错误值 #N/A(值不存在)。
  • ISNONTEXT(value) 值为不是文本的任意项(注意此函数在值为空白单元格时返回 TRUE)。
  • ISNUMBER(value) 值为数字。
  • ISREF(value) 值为引用。
  • ISTEXT(value) 值为文本。

VLOOKUP函数:
在表格数组的首列查找指定的值,并由此返回表格数组当前行中其他列的值。VLOOKUP 中的 V 参数表示垂直方向,因此对应的还有HLOOKUP函数。当比较值位于需要查找的数据左边的一列时,可以使用 VLOOKUP 而不是 HLOOKUP。使用方法如下:

VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
  • Lookup_value 为需要在表格数组 (数组:用于建立可生成多个结果或可对在行和列中排列的一组参数进行运算的单个公式。数组区域共用一个公式;数组常量是用作参数的一组常量。)第一列中查找的数值。Lookup_value 可以为数值或引用。若 lookup_value 小于 table_array 第一列中的最小值,VLOOKUP 返回错误值 #N/A。
  • Table_array 为两列或多列数据,设定了数据范围。使用对区域或区域名称的引用。table_array 第一列中的值是由 lookup_value 搜索的值。这些值可以是文本、数字或逻辑值。文本不区分大小写。
  • Col_index_num 为 table_array 中待返回的匹配值的列序号。Col_index_num 为 1 时,返回 table_array 第一列中的数值;col_index_num 为 2,返回 table_array 第二列中的数值,以此类推。如果 col_index_num 小于 1,VLOOKUP 返回错误值 #VALUE!;大于 table_array 的列数,VLOOKUP 返回错误值 #REF!。
  • Range_lookup 为逻辑值,指定希望 VLOOKUP 查找精确的匹配值还是近似匹配值。如果为 TRUE 或省略,则返回精确匹配值或近似匹配值。也就是说,如果找不到精确匹配值,则返回小于 lookup_value 的最大数值。此时,table_array 第一列中的值必须以升序排序;否则 VLOOKUP 可能无法返回正确的值。如果为 FALSE,VLOOKUP 将只寻找精确匹配值。在此情况下,table_array 第一列的值不需要排序。如果 table_array 第一列中有两个或多个值与 lookup_value 匹配,则使用第一个找到的值。如果找不到精确匹配值,则返回错误值 #N/A。
Captain QR Code

扫码联系船长

发表回复

您的电子邮箱地址不会被公开。