CASE 1
按行列提取
★★★要求:返回数据区域第3行第2列的内容fx公式示例
=INDEX($D$8:$I$13,3,2)
解释:INDEX 直接按照数组内部的行序号和列序号提取交叉位置的内容。
=INDEX(数组, 行号, [列号])
| # | 参数 | 要求 | 怎么理解 / 怎么填 |
|---|---|---|---|
| 1 | 数组 | 必填 | 要参与计算或返回结果的单元格区域/数组。 |
| 2 | 行号 | 必填 | 要引用或返回的行位置。 |
| 3 | 列号 | 选填 | 要引用或返回的列位置。 |
① 找到数据区域
先确认条件列和结果列在哪,注意固定区域加 $
② 按顺序填参数
依次填 数组、行号
③ 回车并向下填充
双击填充柄,整列公式自动套用
=INDEX($D$8:$I$13,3,2)
解释:INDEX 直接按照数组内部的行序号和列序号提取交叉位置的内容。
=INDEX($E$8:$E$13,MATCH("E004",$D$8:$D$13,0))=INDEX($E$8:$E$13,MATCH(F25,$D$8:$D$13,0))
解释:MATCH 找到员工编号的位置,INDEX 再从姓名列提取同一位置的内容。
=INDEX($D$8:$I$13,MATCH("E005",$D$8:$D$13,0),MATCH("月薪",$D$7:$I$7,0))解释:第一个 MATCH 确定目标行,第二个 MATCH 确定目标列,INDEX 返回交叉位置。
=INDEX($D$8:$D$13,MATCH("钱七",$E$8:$E$13,0))=INDEX($D$8:$D$13,MATCH(F41,$E$8:$E$13,0))
解释:INDEX 的返回区域与查找区域相互独立,因此能够轻松实现向左返回。
=INDEX($E$8:$E$13,MATCH(1,($F$8:$F$13="技术部")*($G$8:$G$13="深圳"),0))
解释:多个条件相乘生成定位数组,MATCH 找到符合全部条件的位置后交给 INDEX。
=INDEX($E$8:$E$13,XMATCH("技术部",$F$8:$F$13,0,-1))=INDEX($E$8:$E$13,XMATCH(F57,$F$8:$F$13,0,-1))
解释:XMATCH 使用反向搜索找到最后一次出现的位置,INDEX 返回对应姓名。
上面案例里的 员工编号、姓名 等列,就来自这张表
| 行 | 员工编号 | 姓名 | 部门 | 城市 | 月薪 | 绩效等级 |
|---|---|---|---|---|---|---|
| 8 | E001 | 张三 | 技术部 | 北京 | 15,000 | A |
| 9 | E002 | 李四 | 市场部 | 上海 | 18,000 | B |
| 10 | E003 | 王五 | 技术部 | 深圳 | 22,000 | A |
| 11 | E004 | 赵六 | 财务部 | 广州 | 12,000 | C |
| 12 | E005 | 钱七 | 市场部 | 杭州 | 10,000 | B |
| 13 | E006 | 孙八 | 技术部 | 北京 | 28,000 | A |