KutoolsforOffice — 一套方案,五大工具。事半功倍。

跨多列使用 INDEX 和 MATCH 进行查找

作者Amanda Li修改日期

如果需要在多列中匹配查找某个值,可以结合 INDEXMATCH 函数,以及 MMULTTRANSPOSECOLUMN 等数组公式轻松实现。

INDEX MATCH 多列应用 1

如何跨多列匹配查找某个值?

如上表所示,要填写每位学生对应的班级,而班级信息分布在多列时,您可以先结合使用 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 MATCH 多列应用 2

公式说明

=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 INDEX 函数根据给定位置,从指定区域或数组中返回显示值。

Excel MATCH 函数

Excel MATCH 函数可在单元格区域内查找指定数值,并返回该数值的相对位置。

Excel MMULT 函数

Excel MMULT 函数可返回两个数组的矩阵乘积。结果数组的行数与数组 1 一致,列数则与数组 2 相同。

Excel TRANSPOSE 函数

Excel TRANSPOSE 函数可轻松更改单元格区域或数组的排列方向。例如,您可以将横向排列的表格转换为纵向排列,反之亦然。

Excel COLUMN 函数

COLUMN 函数可返回公式所在单元格的列号,或返回指定引用的列号。例如,公式 =COLUMN(BD) 将返回 56.


相关公式

使用 INDEX 和 MATCH 进行多条件查找

在包含多行多列表头的 Excel 大数据表格中,查找符合多条件的内容常常颇具挑战。此时,您可以通过结合使用 INDEX 与 MATCH 函数组成数组公式,轻松实现目标。

使用 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 —— 支持英语、西班牙语、德语、法语、中文及 40+ 种语言!

Kutools for Excel 拥有超过 300 项功能,让您一键直达所需……


Office Tab —— 让 Microsoft Office(包括 Excel)支持标签式阅读与编辑

  • 一秒即可切换数十个已打开的文档!
  • 每天为您减少数百次鼠标点击,轻松告别鼠标手困扰。
  • 在同时查看和编辑多个文档时,让您的工作效率提升高达 50%。
  • 为 Office(包括 Excel)带来高效标签页体验,畅享如同 Chrome、Edge 和 Firefox 般的便捷操作。