跳转至

第 6 章:高级函数与数组公式

从 VLOOKUP 到 XLOOKUP——掌握 Excel 的查找引用引擎

查找与引用函数是 Excel 中最常用的高级函数。本章从经典的 VLOOKUP 出发,介绍更强大的 XLOOKUP 和 INDEX-MATCH 组合,以及动态数组函数。


6.1 VLOOKUP:经典但有限

VLOOKUP 的四个参数

=VLOOKUP(查找值, 查找范围, 返回列号, 匹配模式)
参数 说明 注意事项
查找值 要查找的内容 必须在查找范围的第一列
查找范围 包含查找值和返回值的区域 查找值必须在第一列
返回列号 返回值在第几列 从查找范围第一列开始数
匹配模式 FALSE=精确匹配,TRUE=近似匹配 建议始终使用 FALSE

VLOOKUP 的三大局限

局限 说明 解决方案
只能向右查找 查找值必须在第一列 使用 XLOOKUP 或 INDEX-MATCH
列号硬编码 插入/删除列后公式出错 使用 XLOOKUP 或 INDEX-MATCH
默认近似匹配 第四个参数省略时默认 TRUE 始终显式写 FALSE

VLOOKUP 的陷阱

=VLOOKUP(A1,B:C,2) —— 第四个参数省略,默认近似匹配,可能返回错误结果。 永远写全四个参数:=VLOOKUP(A1,B:C,2,FALSE)


6.2 XLOOKUP:VLOOKUP 的终结者

XLOOKUP 的语法

=XLOOKUP(查找值, 查找范围, 返回范围, [未找到时的值], [匹配模式], [搜索模式])

实战:XLOOKUP 替代 VLOOKUP

VLOOKUP: =VLOOKUP(A2, B:D, 3, FALSE)
XLOOKUP: =XLOOKUP(A2, B:B, D:D, "未找到")

XLOOKUP 的优势: - 查找范围和返回范围分离, 不要求查找值在第一列 - 可以向左查找 - 自带错误处理(第四个参数) - 插入/删除列不影响公式

XLOOKUP 的高级用法

用法 公式示例 说明
反向查找 =XLOOKUP(A2,C:C,B:B) 在 C 列查找,返回 B 列
多条件查找 =XLOOKUP(A2&B2,A:A&B:B,C:C) 连接多列作为查找键
返回多列 =XLOOKUP(A2,B:B,C:E) 一次返回多列结果
模糊匹配 =XLOOKUP(A2,B:B,C:C,,-1) 第五参数:-1 精确或次小
从后往前找 =XLOOKUP(A2,B:B,C:C,,,-1) 第六参数:-1 从后往前

XLOOKUP 的可用性

XLOOKUP 在 Excel 2021 和 Microsoft 365 中可用。如果你使用的是 Excel 2019 或更早版本,请使用 INDEX-MATCH 替代。


6.3 INDEX-MATCH:万能组合

为什么需要 INDEX-MATCH?

INDEX-MATCH 是 VLOOKUP 出现之前的"万能查找方案",至今仍是兼容性最好的方案。

=INDEX(返回范围, MATCH(查找值, 查找范围, 0))
函数 作用 比喻
MATCH 找到查找值在第几行 GPS 定位——找到坐标
INDEX 返回该行指定列的值 取货——根据坐标拿东西

实战:INDEX-MATCH 双向查找

=INDEX(B2:E10, MATCH(G2, A2:A10, 0), MATCH(H2, B1:E1, 0))

这实现了"根据姓名和月份查找销售额"——先 MATCH 找到行号,再 MATCH 找到列号,最后 INDEX 取值。

INDEX-MATCH vs VLOOKUP vs XLOOKUP

对比维度 VLOOKUP INDEX-MATCH XLOOKUP
向左查找
列插入安全
多条件查找 需要辅助列
语法简洁 ⭐⭐⭐ ⭐⭐⭐
兼容性 所有版本 所有版本 2021+ / 365
性能 中等 较快 较快

6.4 动态数组函数(Microsoft 365)

什么是动态数组?

传统公式返回单个值, 动态数组公式 可以自动"溢出"到相邻单元格,返回多个结果。

核心动态数组函数

函数 用途 示例
FILTER 按条件筛选 =FILTER(A2:C100,B2:B100="销售部")
SORT 排序 =SORT(A2:C100,2,-1) 按第 2 列降序
SORTBY 按指定列排序 =SORTBY(A2:C100,B2:B100,1)
UNIQUE 去重 =UNIQUE(A2:A100)
SEQUENCE 生成序列 =SEQUENCE(10) 生成 1~10
RANDARRAY 随机数组 =RANDARRAY(5,3) 5 行 3 列随机数

实战:动态筛选 Top 5

=SORT(FILTER(A2:C100, C2:C100>10000), 3, -1)

这个公式:先筛选销售额 > 10000 的记录,再按销售额降序排列。结果自动溢出到相邻单元格。

动态数组的 # 引用

引用动态数组的整个溢出范围,使用 # 后缀:

=A2#    引用 A2 单元格溢出的整个数组

6.5 常用高级函数速查

日期与时间

函数 用途
EOMONTH 当月最后一天
NETWORKDAYS 工作日天数
DATEDIF 日期差(年/月/日)
WEEKNUM 第几周

财务函数

函数 用途
PMT 贷款月供
NPV 净现值
IRR 内部收益率
FV 未来值

信息函数

函数 用途
ISNUMBER 是否为数字
ISTEXT 是否为文本
ISBLANK 是否为空
ISERROR 是否为错误值
CELL 单元格信息

要点总结

  • 理解 VLOOKUP 的局限,能写出正确的四参数形式
  • 掌握 XLOOKUP 的基本和高级用法(多条件、反向、返回多列)
  • 理解 INDEX-MATCH 的工作原理,能实现双向查找
  • 了解动态数组函数(FILTER、SORT、UNIQUE)的用法
  • 能根据场景选择合适的查找引用方案

课后练习

  1. 使用 XLOOKUP 实现:根据员工 ID 查找姓名、部门和薪资(一次返回三列)
  2. 使用 INDEX-MATCH 实现双向查找:根据产品和月份查找销售额
  3. 使用 FILTER + SORT 函数动态筛选并排序销售额 Top 10 的产品

下一章预告: 第 7 章:宏与 VBA 入门 —— 录制你的第一个宏,用 VBA 自动化重复工作。