跨多列使用 INDEX 和 MATCH 进行查找
如果需要在多列中匹配查找某个值,可以结合 INDEX 和 MATCH 函数,以及 MMULT、TRANSPOSE 和 COLUMN 等数组公式轻松实现。

如何跨多列匹配查找某个值?
如上表所示,要填写每位学生对应的班级,而班级信息分布在多列时,您可以先结合使用 MMULT、TRANSPOSE 和 COLUMN 函数生成矩阵数组,再用 MATCH 函数获取查找值的位置,最后将其传递给 INDEX 函数,轻松返回所需数组中的值。
通用语法
=INDEX()return_range,(MATCH(1,MMULT(--())))lookup_array=lookup_value),TRANSPOSE(COLUMN()lookup_array)^0)),0)))
√ 注意:此为数组公式,输入时需同时按下 Ctrl+Shift+Enter 键。
- return_range:指定您希望公式返回班级信息的区域,即班级所在的区域。
- lookup_value:公式用于查找对应班级信息的值,这里指的是给定的姓名。
- lookup_array:包含 lookup_value 的单元格区域,即与 lookup_value 进行比较的数值所在区域。此处指的是姓名区域。
- match_type 0: 强制 MATCH 函数仅查找与 lookup_value 完全相等的第一个数值。
要查找 Jimmy 所在的班级,请将下方公式复制或输入至 H5 单元格,并按下 Ctrl+Shift+Enter,即可得出结果:
=INDEX()$B$5:$B$7,(MATCH(1,MMULT(--())))$C$5:$E$7=G5),TRANSPOSE(COLUMN()$C$5:$E$7)^0)),0)))
√ 注意:上面的美元符号($) 表示绝对引用,即在将公式移动或复制到其他单元格时,公式中的名称和范围不会发生变化。请注意,代表查找值的单元格引用不应添加美元符号,因为复制公式到其他单元格时需要使其为相对引用。输入公式后,可以拖动填充柄向下,将公式应用到下方的单元格。

公式说明
=INDEX()$B$5:$B$7,(MATCH(1,))MMULT()--($C$5:$E$7=G5),TRANSPOSE()COLUMN($C$5:$E$7)^0)),0)))
- --($C$5:$E$7=G5): 此片段检测区域 $C$5:$E$7 中的每个值是否等于单元格 G5 中的值,并生成如下 TRUE 和 FALSE 的数组:
{TRUE,FALSE,FALSE;FALSE,FALSE,FALSE;FALSE,FALSE,FALSE}.
双负号操作会将 TRUE 和 FALSE 转换为 1 和 0,从而得到如下数组:
{1,0,0;0,0,0;0,0,0}. - COLUMN($C$5:$E$7):COLUMN 函数返回区域 $C$5:$E$7 的列号,结果如下所示:{3,4,5}.
- TRANSPOSE()COLUMN($C$5:$E$7)^0)=TRANSPOSE(){3,4,5}^0): 将数组 {3,4,5} 中的每个数字都进行 0 次方运算后,都会变为 1,得到结果:{1,1,1}。接着,TRANSPOSE 函数会将该列数组转换为如下的行数组:{1;1;1}。
- MMULT()--($C$5:$E$7=G5),TRANSPOSE()COLUMN($C$5:$E$7)^0))=MMULT(){1,0,0;0,0,0;0,0,0},{1;1;1}):MMULT 函数返回这两个数组的乘积,结果如下:{1;0;0}.
- MATCH(1,)MMULT()--($C$5:$E$7=G5),TRANSPOSE()COLUMN($C$5:$E$7)^0)),0)=MATCH(1,){1;0;0},0):match_type 0 会强制 MATCH 函数返回 1 在数组 {1;0;0} 中首次出现的位置,也就是 1.
- INDEX()$B$5:$B$7,(MATCH(1,))MMULT()--($C$5:$E$7=G5),TRANSPOSE()COLUMN($C$5:$E$7)^0)),0))) = INDEX($B$5:$B$7INDEX 函数返回班级区域 $B$5:$B$7 中第 1 个值,即 A。
如果您想轻松地跨多列匹配查找某个值,也可以使用我们的专业 Excel 加载项 Kutools For Excel。请参阅此处的操作说明以完成目标。
相关函数
Excel INDEX 函数根据给定位置,从指定区域或数组中返回显示值。
Excel MATCH 函数可在单元格区域内查找指定数值,并返回该数值的相对位置。
Excel MMULT 函数可返回两个数组的矩阵乘积。结果数组的行数与数组 1 一致,列数则与数组 2 相同。
Excel TRANSPOSE 函数可轻松更改单元格区域或数组的排列方向。例如,您可以将横向排列的表格转换为纵向排列,反之亦然。
COLUMN 函数可返回公式所在单元格的列号,或返回指定引用的列号。例如,公式 =COLUMN(BD) 将返回 56.
相关公式
在包含多行多列表头的 Excel 大数据表格中,查找符合多条件的内容常常颇具挑战。此时,您可以通过结合使用 INDEX 与 MATCH 函数组成数组公式,轻松实现目标。
如果您想在 Excel 中跨行跨列查找数据,或查找位于特定行和特定列交叉处的数值,可以利用 INDEX 和 MATCH 函数轻松实现。
在某些情况下,您可能需要根据多个条件查找最接近或近似匹配的值。通过结合使用 INDEX、MATCH 和 IF 函数,您可以在 Excel 中高效实现这一需求。
最强最佳办公效率工具
Kutools for Excel —— 助您脱颖而出
| 🤖 | KUTOOLS AI 助手:基于数据分析的革命性升级智能执行 | 生成代码| 创建自定义公式 | 数据分析及生成图表| 调用 Kutools Functions…… |
| 热门功能:查找、高亮或标记重复项 | 删除空白行 | 合并列或单元格且不丢失数据 | 不使用公式的四舍五入…… | |
| 超级 VLookup:多条件查找 | 多值返回 | 跨多表查找 | 模糊查找…… | |
| 高级下拉列表:便捷下拉列表 | 联动下拉列表 | 多选下拉列表…… | |
| 列管理器:添加指定数量的列 | 移动列 | 切换隐藏列可见状态 |对比列与选择相同/不同单元格…… | |
| 精选功能:网格聚焦 | 设计视图 | 增强编辑栏 | 工作簿和表管理器|资源库(自动文本)| 日期提取 | 汇总工作表 | 加密/解密单元格 | 按列表批量发送邮件 | 超级筛选 | 特殊筛选(筛选粗体单元格/斜体/删除线等) ...... | |
| 顶级 15 工具集:12 文本工具(添加文本、删除特定字符……)| 50+ 图表 类型(甘特图……)| 40+ 实用公式(基于生日计算年龄……)| 19 插入工具(插入二维码、按路径插入图片……)| 12 转换工具(小写金额转大写、汇率转换……)| 7 合并和拆分工具(高级合并行、拆分 Excel 单元格……)|…… 以及更多 |
Kutools for Excel 拥有超过 300 项功能,让您一键直达所需……
Office Tab —— 让 Microsoft Office(包括 Excel)支持标签式阅读与编辑
- 一秒即可切换数十个已打开的文档!
- 每天为您减少数百次鼠标点击,轻松告别鼠标手困扰。
- 在同时查看和编辑多个文档时,让您的工作效率提升高达 50%。
- 为 Office(包括 Excel)带来高效标签页体验,畅享如同 Chrome、Edge 和 Firefox 般的便捷操作。