EP04. “Two-way Lookup 二维查找”
🔒 登录后可标记已读- 讲怎么在一个二维表格里,同时按「行标签」和「列标签」两个条件查一个交叉值
- 比如查「2 月份、巧克力口味」的冰淇淋销量
- 介绍两种做法:INDEX+MATCH 组合,以及用命名范围搭配交集运算符
- 前置知识需要先看过 EP03 的 INDEX+MATCH
- 学完能处理各种「行列交叉表」查数据的需求
重点内容
示例数据
一张冰淇淋销售表,行是月份(A2:A13,Jan 到 Dec),列是口味(B1:D1,比如 Chocolate、Vanilla、Strawberry),中间 B2:D13 是各月各口味的销售数量。
[截图:冰淇淋销售二维表格,标出 "Feb" 行和 "Chocolate" 列交叉的目标单元格位置]
方法怎么选
| 方法 | 写法 | 备注 |
|---|---|---|
| INDEX + MATCH 组合 | =INDEX(B2:D13,MATCH("Feb",A2:A13,0),MATCH("Chocolate",B1:D1,0)) | 不用先建命名范围,写法通用 |
| 命名范围 + 交集运算符 | =Feb Chocolate | 公式更直观像查表格坐标,但要先建好命名范围 |
方法一:INDEX + MATCH 组合
- 用 MATCH 找月份 "Feb" 在 A2:A13 里的位置:
=MATCH("Feb",A2:A13,0)
结果是 2(Feb 是第 2 个月份)
- 用 MATCH 找口味 "Chocolate" 在 B1:D1 里的位置:
=MATCH("Chocolate",B1:D1,0)
结果是 1(Chocolate 是第 1 个口味)
- 用 INDEX 在二维范围 B2:D13 里,同时指定第几行第几列取值:
=INDEX(B2:D13,2,1)
结果是 217(2 月份 Chocolate 口味的销量)
- 完整公式(把行列位置换成 MATCH 动态计算):
=INDEX(B2:D13,MATCH("Feb",A2:A13,0),MATCH("Chocolate",B1:D1,0))
方法二:命名范围 + 交集运算符
- 选中整个数据范围 A1:D13
- 用 Formulas → Defined Names → Create from Selection(创建选定范围内的名称)
- 勾选 Top row(顶行)和 Left column(左列)两个选项
- Excel 会自动根据行标签和列标签各自创建命名范围(示例里自动生成了 15 个命名范围)
- 用交集运算符(一个空格)直接取两个命名范围的交叉值:
=Feb Chocolate
- 动态查找(配合单元格输入):G2 输入 "Feb",G3 输入 "Chocolate",用 INDIRECT 把文本转成命名范围再取交集:
=INDIRECT(G2) INDIRECT(G3)
学完你会
- ✅ 能用 INDEX+MATCH 在二维表格里同时按行标签和列标签查交叉值
- ✅ 能用 Create from Selection 快速把行列标签批量建成命名范围
- ✅ 能用交集运算符(空格)搭配命名范围,写出像查表格坐标一样直观的公式
常见错误
- INDEX 二维查找时行列位置参数顺序搞反(应该是先行后列),导致取到的值不是预期的交叉格
- 用命名范围+交集运算符时,两个命名范围之间要留一个空格,容易漏打或多打导致公式报错
- Create from Selection 时忘记同时勾选顶行和左列,导致命名范围没有按预期生成
Sources
Blog / Website: