跳转至

INDEX 函数

函数概述

INDEX 是 Excel 中用于“按位置返回值”的核心查找函数。它可以从指定区域/数组中,根据给定的行号、列号(以及在引用形式下的区域编号)返回对应单元格的值或引用。 在很多场景里,INDEX 会与 MATCH(或 XMATCH)组合,构建灵活、稳定的查找方案(常见的 INDEX+MATCH),尤其适用于列位置可能变动的表格。


基础语法

INDEX 有两种常用形式:数组形式引用形式

1)数组形式(最常用)

INDEX(array, row_num, [column_num])

2)引用形式(可在多个区域间选择)

INDEX(reference, row_num, [column_num], [area_num])

参数说明

数组形式参数

参数 必填 含义 说明
array 需要返回值的数组/区域 A2:D10,也可以是数组常量或动态数组结果
row_num 行号(相对 array 的第几行) 1 表示 array 的第一行
column_num 列号(相对 array 的第几列) 省略时,要求 array 为单列区域

引用形式参数

参数 必填 含义 说明
reference 一个或多个区域引用 多区域用逗号分隔,例如 (A1:B5, D1:E5)
row_num 行号(相对所选区域) 与数组形式一致
column_num 列号(相对所选区域) 与数组形式一致
area_num 选第几个区域 1 表示 reference 中第一个区域

小提示:INDEX 返回的结果可以是“值”,也可以是“引用”。当它被用于某些函数(如 SUMAVERAGEOFFSET 类似用途)或作为公式的一部分时,引用特性会非常有用。


基础用法示范

下面用一个简单数据表来举例(假设数据区域为 A1:D6):

A列 B列 C列 D列
姓名 部门 月份 销售额
张三 华东 1月 12000
李四 华南 1月 15000
王五 华东 2月 18000
赵六 华北 2月 9000
钱七 华南 3月 21000

1)按行列位置返回单元格的值

需求:从 A2:D6 中取第 3 行、第 4 列的值。

=INDEX(A2:D6, 3, 4)

解释:A2:D6 的第 3 行是原表的第 4 行(王五那行),第 4 列是“销售额”,结果返回 18000


2)只在单列区域中按行取值

需求:从销售额列 D2:D6 中取第 5 个值。

=INDEX(D2:D6, 5)

结果返回 21000


3)INDEX + MATCH:按“关键字”查找返回值

需求:输入姓名(如在 F2),返回对应的部门。

=INDEX(B2:B6, MATCH(F2, A2:A6, 0))
  • MATCH(F2, A2:A6, 0):在姓名列中精确匹配 F2,得到所在行序号
  • INDEX(B2:B6, ...):用该行序号去部门列取值

4)二维查找:INDEX + MATCH + MATCH

场景:你有一个交叉表,例如 A1:D4

  • 行标题在 A2:A4(如“张三/李四/王五”)
  • 列标题在 B1:D1(如“1月/2月/3月”)
  • 数据在 B2:D4

需求:给定“姓名”和“月份”,返回交叉位置的数值。

=INDEX(B2:D4, MATCH(F2, A2:A4, 0), MATCH(G2, B1:D1, 0))

这类写法的优势是:即使月份列顺序调整,只要标题不变,公式仍然可靠。


5)在多个区域中按 area_num 选择区域返回

需求:从两个区域中选择其一返回第 2 行第 1 列

  • 区域1:A1:A5
  • 区域2:C1:C5
  • 选择由 area_num 决定(1 或 2)
=INDEX((A1:A5, C1:C5), 2, 1, 2)

解释:area_num=2 选第二个区域 C1:C5,取第 2 行第 1 列,即 C2 的值。


6)用 INDEX 构造动态区域

需求:对 D2:D6 中从第 1 个到第 N 个销售额求和(N 在 F2

=SUM(D2:INDEX(D2:D6, F2))

F2=3 时,相当于 SUM(D2:D4);当 F2=5 时,相当于 SUM(D2:D6)


总结

  • INDEX 的本质是:在给定区域中按“位置”取值/取引用
  • 数组形式最常用:INDEX(array,row,[col]),适合绝大多数按行列取值的需求。
  • INDEX + MATCH(或 INDEX + XMATCH)是更灵活的查找方案:不依赖固定列序号,结构变动更抗风险。
  • 进阶用法中,INDEX 还能用于构建动态区间与二维交叉查询,是 Excel 公式体系里非常“底层且强大”的函数之一。