Excel Data Analysis 简明教程
Excel Data Analysis - Lookup Functions
您可以使用 Excel 函数来 −
-
在数据范围内查找值 - VLOOKUP 和 HLOOKUP
-
从表或范围内获取值或对值的引用 - INDEX
-
获取单元格范围内指定项的相对位置 - MATCH
您还可基于提供的输入将这些函数结合使用,以获得所需的结果。
Using VLOOKUP Function
VLOOKUP 函数的语法为
VLOOKUP (lookup_value, table_array, col_index_num, [range_lookup])
其中
-
lookup_value − 是您想要查找的值。Lookup_value 可以是值或对单元格的引用。Lookup_value 必须位于您在 table_array 中指定单元格范围的第一列
-
table_array − 是 VLOOKUP 将在其中搜索 lookup_value 和返回值的单元格范围。table_array 必须在第一列包含 lookup_value,并且您要查找的返回值 Note − 包含 lookup_value 的第一列可以按升序排列,也可以不排列。但是,结果将基于此列的顺序。
-
col_index_num − 是 table_array 中包含返回值的列号。对于 table-array 最左侧的列,号码从 1 开始
-
range_lookup − 是一个可选的逻辑值,用于指定您希望 VLOOKUP 查找完全匹配还是近似匹配。可以省略 range_lookup,在这种情况下,假定它为 TRUE,并且 VLOOKUP 尝试查找近似匹配结果。也就是,如果找不到完全匹配,则会返回小于 lookup_value 的下一个最大值。TRUE,在这种情况下,VLOOKUP 尝试查找近似匹配。换言之,如果找不到完全匹配,则会返回小于 lookup_value 的下一个最大值FALSE,在这种情况下,VLOOKUP 尝试查找完全匹配1,在这种情况下,假定它为 TRUE,并且 VLOOKUP 尝试查找近似匹配0,在这种情况下,假定它为 FALSE,并且 VLOOKUP 尝试查找完全匹配
Note − 如果省略了 range_lookup,或者将其设为 TRUE 或 1,则 VLOOKUP 只有在 table_array 中的第一列按升序排列时才会正确运行。否则,可能会导致值不正确。在这种情况下,请对 range_lookup 使用 FALSE。
Using VLOOKUP Function with range_lookup TRUE
考虑一下学生成绩列表。您可以使用 VLOOKUP 从包含成绩间隔和通过类别的数组中获取相应的成绩。
table_array −
请注意,成绩按升序排列的第一列是获取成绩的依据。因此,对 range_lookup 参数使用 TRUE 可以得到近似匹配,即所需匹配。
将此数组命名为 Grades 。
按照这种方式命名数组是一个好习惯,这样您就不必记住单元格范围。现在,您可以按照以下步骤准备查找您所拥有的分数列表的成绩−
您可以观察到,
-
col_index_num – 表示 table_array 中返回值列为 2
-
range_lookup 为 TRUEtable_array 成绩中包含查找值的第一列按升序排列。因此,结果将是正确的。您还可以获取近似匹配的返回值。即 VLOOKUP 计算如下−
Marks |
Pass Category |
< 35 |
Fail |
>= 35 且 < 50 |
Third Class |
>= 50 且 < 60 |
Second Class |
>=60 and < 75 |
First Class |
>= 75 |
First Class with Distinction |
您将获得以下结果−
Using VLOOKUP Function with range_lookup FALSE
考虑一个产品列表,其中包含每个产品的产品 ID 和价格。每当推出新产品时,产品 ID 和价格都会添加到列表末尾。这意味着产品 ID 不一定按升序排列。产品列表可能如下所示:−
table_array −
将此数组命名为 ProductInfo。
您可以使用 VLOOKUP 函数获取给定产品 ID 的价格,因为产品 ID 在第一列。价格在列 3 中,因此 col_index_ num 应为 3。
-
将 VLOOKUP 函数与 range_lookup 用作 TRUE
-
将 VLOOKUP 函数与 range_lookup 用作 FALSE
正确答案来自 ProductInfo 数组为 171.65。您可以检查结果。
您会观察到获得−
-
range_lookup 为 FALSE 时的正确结果,和
-
range_lookup 为 TRUE 时的错误结果。
这是因为 ProductInfo 数组中的第一列不是按升序排序的。因此,请记住,每当数据未排序时都要使用 FALSE。
Using HLOOKUP Function
如果数据是以行而不是列的形式,则可以使用 HLOOKUP 函数。
Example
让我们以产品信息为例。假设数组如下:−
-
将此数组命名为 ProductRange。您可以使用 HLOOKUP 函数查找给定产品 ID 的价格。
HLOOKUP 函数的语法为:
HLOOKUP (lookup_value, table_array, row_index_num, [range_lookup])
其中
-
lookup_value − 是表的第一行中要查找的值
-
table_array − 是查找数据的资料表
-
row_index_num − 是 table_array 中的行号,将从中返回匹配的值
-
range_lookup − 是逻辑值,用于指定希望 HLOOKUP 查找精确匹配还是近似匹配
-
range_lookup 可以省略,省略时假定为 TRUE,并且 HLOOKUP 尝试查找近似匹配。换句话说,如果找不到精确匹配,则返回小于 lookup_value 的下一个最大值。TRUE,这意味着 HLOOKUP 尝试查找近似匹配。换句话说,如果找不到精确匹配,则返回小于 lookup_value 的下一个最大值。FALSE,这意味着 HLOOKUP 尝试查找精确匹配。1,这意味着假定为 TRUE,并且 HLOOKUP 尝试查找近似匹配。0,这意味着假定为 FALSE,并且 HLOOKUP 尝试查找精确匹配
Note − 如果 range_lookup 被省略或为 TRUE 或 1,则只有当 table_array 中的第一列按升序排序时,HLOOKUP 才能正常工作。否则,它可能会导致值不正确。在这种情况下,请对 range_lookup 使用 FALSE。
Using HLOOKUP Function with range_lookup FALSE
可以使用 HLOOKUP 函数获取给定产品 ID 的产品价格,因为产品 ID 位于第一行。价格位于第 3 行,因此 row_index_num 应为 3。
-
使用 HLOOKUP 函数,其中 range_lookup 为 TRUE。
-
使用 HLOOKUP 函数,其中 range_lookup 为 FALSE。
ProductRange 数组中的正确答案为 171.65。您可以查看结果。
您观察到,就像在 VLOOKUP 的情况下,您获得了
-
range_lookup 为 FALSE 时的正确结果,和
-
range_lookup 为 TRUE 时的错误结果。
这是因为 ProductRange 数组中的第一行没有按升序排序。因此,请记住,只要数据未按升序排序,就始终使用 FALSE。
Using HLOOKUP Function with range_lookup TRUE
考虑 VLOOKUP 中使用的学生成绩示例。假设您将数据放在行中而不是列中,如下表所示 −
table_array −
将此数组命名为 GradesRange。
请注意,基于此获得成绩的第一行按升序排序。因此,对 range_lookup 参数使用 TRUE,可以使用 HLOOKUP 获取近似匹配的成绩,这就是所需的内容。
您可以观察到,
-
row_index_num − 表示 table_array 中返回值的列为 2
-
range_lookup 为 TRUEtable_array Grades 中包含查找值的第一列按升序排列。因此,结果将是正确的。您还可以获取近似匹配的返回值。即 HLOOKUP 计算如下 −
Marks |
< 35 |
>= 35 且 < 50 |
>= 50 且 < 60 |
>=60 and < 75 |
>= 75 |
Pass Category |
Fail |
Third Class |
Second Class |
First Class |
First Class with Distinction |
您将获得以下结果−