excel关联类函数(包括vlookup、hlookup、xlookup、lookup、index、match、offset、row、colum、choose)

1. VLOOKUP 函数

用途:
在数据表的最左侧列(首列)中查找指定的值(数据),并返回该行(指定数据所在行)中某一指定列的值(数据)。

语法:

=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
  • lookup_value:要查找的值(可以是单元格引用或直接输入的固定值)。
  • table_array:包含数据的整个区域,查找值必须位于该区域的第一列。
  • col_index_num:指定当找到匹配行时,从该区域的第几列返回值(第一列为 1)。
  • range_lookup:可选参数,填写 TRUE或1(或省略)表示近似匹配,填写 FALSE 或0表示精确匹配。

示例:
假设 A2:C7 是一个员工信息表,第一列为员工编号,第三列为工资。若希望查找单元格 E2 中的编号对应的工资,则公式为:

=VLOOKUP(E2, A2:C7, 3, FALSE)

此公式会在 A2:A7 中查找与 E2 完全匹配的编号,然后返回同一行第 3 列的工资值。


2. HLOOKUP 函数

用途:
VLOOKUP 类似,但 HLOOKUP 用于水平查找,即在表格的第一行中查找值,并返回该列中指定行的值。

语法:

=HLOOKUP(lookup_value, table_array, row_index_num, [range_lookup])
  • lookup_value:要查找的值。
  • table_array:数据区域,查找值必须在第一行。
  • row_index_num:指定返回值所在的行数(第一行为 1)。
  • range_lookup:同 VLOOKUPTRUE 或1为近似匹配,FALSE 或0为精确匹配。

示例:
如果数据区域为 A1:F5,第一行为产品名称,第二行为库存,想查找产品名称在单元格 H1 中对应的库存,则公式为:

=HLOOKUP(H1, A1:F5, 2, FALSE)

3. XLOOKUP 函数

功能概述
XLOOKUP 是 Office 365 / Excel 2021 及以后版本中新增的查找函数,它旨在替代 VLOOKUPHLOOKUP 以及传统的 INDEX+MATCH 组合。它既支持精确匹配,也支持模糊匹配,并且不受查找方向的限制(既可以向右也可以向左查找)。

语法:

=XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])
  • lookup_value:要查找的值,可以是数值、文本或单元格引用。
  • lookup_array:待查找的区域或数组,该数组中包含可能匹配的值。
  • return_array:当查找到匹配值后,要返回值的区域,返回区域和查找区域的行数(或列数)应一致。
  • if_not_found(可选):如果找不到匹配值时返回的内容;如果省略,当没有匹配时将返回 #N/A 错误。
  • match_mode(可选):指定匹配方式,常用的有:
    • 0:完全匹配
    • -1:完全匹配或下一个较小值
    • 1:完全匹配或下一个较大值
    • 2:使用通配符进行匹配
  • search_mode(可选):控制搜索顺序,1 表示从第一项开始搜索,-1 表示从最后一项开始搜索,其他值还可以指定二分搜索等方式。

示例:
假设你有一个产品列表,产品编号在 A2:A10,价格在 B2:B10。你想查找单元格 D2 中的产品编号对应的价格,可以写成:

=XLOOKUP(D2, A2:A10, B2:B10, "未找到", 0)

如果找不到,则返回“未找到”。由于 XLOOKUP 内置了错误处理,因此比传统的 VLOOKUP 更加直观和灵活。


4. LOOKUP 函数

用途:
用于在一个单行或单列中查找数据,然后返回另一数组中相同位置的值。LOOKUP 不仅支持文本和数字查找,还可用于查找近似值,但要求查找数组必须按升序排序。

语法(向量形式):

=LOOKUP(lookup_value, lookup_vector, [result_vector])
  • lookup_value:需要查找的值。
  • lookup_vector:包含可能查找值的单列或单行。
  • result_vector:返回值所在的单列或单行,其位置与 lookup_vector 对应。

示例:
假设 A2:A7 为姓名,C2:C7 为年龄,若要查找 E2 中的姓名对应的年龄,可以写成:

=LOOKUP(E2, A2:A7, C2:C7)

(注意:使用 LOOKUP 时,A2:A7 必须按升序排序,否则可能返回错误结果)


5. INDEX 函数

用途:
返回数组中指定位置的值。INDEX 可用于单行、单列或二维区域。

语法:

=INDEX(array, row_num, [column_num])
  • array:数据区域或数组。
  • row_num:所需返回值所在的行号。
  • column_num:(可选)所需返回值所在的列号;当 array 为二维区域时需指定。

示例:
如果 A2:C7 是一个二维区域,想返回第 4 行第 2 列的内容,则:

=INDEX(A2:C7, 4, 2)

6. MATCH 函数

用途:
在一维数组中查找指定的值,并返回该值在数组中的位置(相对序号)。

语法:

=MATCH(lookup_value, lookup_array, [match_type])
  • lookup_value:要查找的值。
  • lookup_array:查找范围(通常为一列或一行)。
  • match_type:指定匹配类型,0 表示精确匹配,1 表示查找小于或等于 lookup_value 的最大值(数组必须升序),-1 表示查找大于或等于 lookup_value 的最小值(数组必须降序)。

示例:
在 A2:A7 中查找单元格 E2 的值,返回其在区域中的位置:

=MATCH(E2, A2:A7, 0)

7. INDEX 与 MATCH 组合

这两个函数经常结合使用,可以替代 VLOOKUP 进行更加灵活的查找。

组合公式:

=INDEX(return_range, MATCH(lookup_value, lookup_range, 0))

示例:
使用 A2:A7 为姓名区域,C2:C7 为年龄区域,要查找 E2 中姓名对应的年龄:

=INDEX(C2:C7, MATCH(E2, A2:A7, 0))

这种组合的优点包括可以在任意方向查找(例如查找值不一定必须在最左侧)以及对数据区域结构变化更为稳健。


7. OFFSET 函数

用途:
基于给定的起始引用(top_cell),返回经过指定行、列偏移后的单元格或区域。常用于动态区域引用。

语法:

=OFFSET(reference, rows, cols, [height], [width])
  • reference:起始单元格或区域。
  • rows:向下(正值)或向上(负值)偏移的行数。
  • cols:向右(正值)或向左(负值)偏移的列数。
  • heightwidth:(可选)返回区域的高度和宽度。

示例:
若 A1 为起始单元格,想引用从 A1 开始,向下偏移 3 行、向右偏移 2 列的单元格,则公式为:

=OFFSET(A1, 3, 2)

返回的是单元格 C4(如果 A1 为第一行第一列)。


8. XMATCH 函数

功能概述
XMATCH 是与 MATCH 类似的函数,但功能更强大、灵活。它返回指定查找值在数组中的相对位置,并支持从前向后或从后向前的搜索,还可以进行通配符匹配。相比传统 MATCHXMATCH 更直观且更易于使用。

语法:

=XMATCH(lookup_value, lookup_array, [match_mode], [search_mode])
  • lookup_value:要查找的值。
  • lookup_array:待查找的区域(必须为一维数组)。
  • match_mode(可选):指定匹配方式,常用参数与 XLOOKUP 类似:
    • 0:精确匹配
    • -1:精确匹配或查找小于查找值的最大值
    • 1:精确匹配或查找大于查找值的最小值
    • 2:允许使用通配符匹配
  • search_mode(可选):指定搜索方向,1 表示从第一项开始,-1 表示从最后一项开始。

示例:
假设在区域 A2:A10 中查找某个文本“张三”的位置:

=XMATCH("张三", A2:A10, 0)

该函数将返回“张三”在 A2:A10 中的相对位置(例如如果“张三”在第 5 行,则返回 4,因为 A2 是第一项)。


9. ROW 和 COLUMN 函数

ROW 函数

用途: 返回指定单元格的行号。
语法:

=ROW([reference])

示例:

=ROW(A5)

返回 5;如果不提供 reference,则返回公式所在单元格的行号。

COLUMN 函数

用途: 返回指定单元格的列号。
语法:

=COLUMN([reference])

示例:

=COLUMN(D1)

返回 4;同样,不提供 reference 则返回公式所在单元格的列号。


10. CHOOSE 函数

功能概述
CHOOSE 函数根据给定的索引值,从一系列值或数组中返回对应的项。它常用于在多个选项中根据数字选择返回不同的数据,也可以与其他函数结合使用实现动态选择。

语法:

=CHOOSE(index_num, value1, value2, [value3], …)
  • index_num:一个数值,表示你希望返回第几项(必须为正整数)。
  • value1, value2, …:一个或多个值或表达式,CHOOSE 根据 index_num 返回对应的值。

示例:
假设你想根据一个选择数字返回不同的水果名称:

=CHOOSE(2, "苹果", "香蕉", "橙子")

结果将返回“香蕉”,因为索引 2 对应第二个值。

应用场景:

  • 当需要根据用户输入或计算结果在多个选项中切换返回值时,非常方便。
  • 可与 XLOOKUP、INDEX 等函数配合,实现更灵活的数据选择和查找操作。