03年3月
使用Excel的VLOOKUP查找数据的近似匹配
VLOOKUP函数如何工作
Excel的VLOOKUP 功能代表垂直查找 ,可用于查找位于数据表或数据库表中的特定信息。
VLOOKUP通常返回单个数据字段作为其输出。 它是如何做到的:
- 您提供了一个名称或lookup_value ,它告诉VLOOKUP数据表的哪一行或哪条记录查找所需的数据
- 您提供您所寻找的数据的列号(称为col_index_num)
- 该函数在数据表的第一列中查找lookup_value
- VLOOKUP然后使用提供的列号找到并返回您从同一记录的另一个字段查找的信息
首先对数据进行排序
虽然并不总是必需的,但通常最好先对 VLOOKUP正在使用排序键范围的第一列以升序搜索的数据范围进行排序。
如果数据未排序,则VLOOKUP可能会返回错误的结果。
VLOOKUP函数的语法和参数
VLOOKUP函数的语法是:
= VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
lookup _value - (必填)要搜索的值 - 例如上图中销售的数量
table_array - (必填)这是VLOOKUP搜索以查找您之后的信息的数据表。
- table_array必须包含至少两列数据
- 第一列通常包含lookup_value
col_index_num - (必填)要找到的值的列号。
- 编号以search_key列作为第1列开始
- 如果col_index_num被设置为一个大于table_array参数中选择的列数的数字,则#REF! 错误是由函数返回的
range_lookup - (可选)指示范围是否按升序排序。
- 第一列中的数据用作排序关键字
- 布尔值 - TRUE或FALSE是唯一可接受的值
- 如果省略,默认情况下该值设置为TRUE
- 如果设置为TRUE或省略,并且范围的第一列未按升序排序,则可能会出现错误的结果
- 如果设置为TRUE或省略,并且找不到查找_value的精确匹配项,则使用大小或值较小的最近匹配项作为search_key
- 如果设置为FALSE,则VLOOKUP仅接受查找_值的完全匹配。 如果有多个匹配值,则返回第一个匹配值
- 如果设置为FALSE并且找不到search_key的匹配值,则该函数会返回#N / A错误
示例:找到购买数量的折扣率
上图中的示例使用VLOOKUP函数来查找根据购买物品数量而变化的折扣率。
示例显示购买19件商品的折扣为2%。 这是因为数量列包含值的范围。 因此,VLOOKUP找不到完全匹配。 相反,必须找到近似匹配才能返回正确的折扣率。
寻找近似匹配:
- 按升序对table_array中的数据进行排序;
- 将range_lookup参数设置为TRUE
在该示例中,使用包含VLOOKUP函数的以下公式来查找所购商品数量的折扣。
= VLOOKUP(C2,$ C $ 5:$ d $ 8,2,TRUE)
即使这个公式只能被输入到工作表单元格中,但与下面列出的步骤一起使用的另一个选项是使用函数的对话框输入其参数。
- 使用对话框通常可以更容易地正确输入函数的参数。
打开VLOOKUP对话框
用于将上图中显示的VLOOKUP函数输入到单元格B2中的步骤如下:
02 03
输入Excel的VLOOKUP函数的参数
指向单元格引用
VLOOKUP函数的参数被输入到对话框的单独行中,如上图所示。
可以将用作参数的单元格引用输入到正确的行中,或者,如以下步骤中所做的那样,使用鼠标指针突出显示期望范围的单元格的指针可用于将它们输入到对话框中。
使用指点的优点包括:
- 它比打字更快;
- 输入正确的单元格引用的错误更少。
使用相对和绝对单元格引用和参数
使用VLOOKUP的多个副本从相同的数据表中返回不同的信息并不罕见。 为了简化操作,VLOOKUP通常可以从一个单元复制到另一个单元。 当函数被复制到其他单元格时,必须注意确保函数的新位置产生的单元格引用是正确的。
在上面的图片中,美元符号( $ )围绕table_array参数的单元格引用,表示它们是绝对单元格引用 ,这意味着如果将该函数复制到另一个单元格 ,它们将不会更改。 这是可取的,因为VLOOKUP的多个副本都会引用与数据源相同的数据表。
另一方面,用于lookup_value的单元格引用不包含美元符号,这使得它成为相对单元格引用。 相对单元格引用会在复制时发生更改,以反映它们相对于所引用数据位置的新位置。
输入函数参数
- 点击VLOOKUP对话框中的Lookup _value行
- 单击工作表中的单元格C2以输入此单元格引用作为search_key参数
- 点击对话框的Table_array行
- 突出显示工作表中的单元格C5到D8,以便以Table_array参数的形式输入此范围 - 不包括表格标题
- 按下键盘上的F4键将范围更改为绝对单元格引用
- 点击对话框的Col_index_num行
- 在此行上输入2作为Col_index_num参数,因为折扣率位于Table_array参数的第2列
- 点击对话框的Range_lookup行
- 输入True作为Range_lookup参数
- 按下键盘上的Enter键关闭对话框并返回工作表
- 答案2%(购买数量的折扣率)应出现在工作表的单元格D2中
- 当您单击单元格D2时,完整函数= VLOOKUP(C2,$ C $ 5:$ D $ 8,2,TRUE)出现在工作表上方的公式栏中
为什么VLOOKUP返回2%作为结果
- 在示例中,“ 数量”列不包含search_key值为19的精确匹配项。
- 由于is_sorted参数设置为TRUE,因此VLOOKUP将找到与search_key值大致匹配的值。
- 尺寸最小的值仍小于search_key值19,为11。
- 因此,VLOOKUP在包含11的行中查找折扣百分比,并因此返回2%的折扣率。
03年03月
Excel VLOOKUP无法正常工作:#N / A和#REF错误
VLOOKUP错误消息
以下错误消息与VLOOKUP相关联。
A#N / A(“value not available”)显示错误如果:
- 在range参数的第一列中找不到lookup _value
- Table_array参数不准确。 例如,参数可能包括范围左侧的空列
- Range_lookup参数设置为FALSE,并且无法在范围的第一列中找到search_key参数的完全匹配
- Range_lookup参数设置为TRUE,并且范围第一列中的所有值都大于search_key
#REF! (“参考超出范围”)显示错误如果:
- Col_index_num参数大于Table_array中的列数