跨多列的INDEX和MATCH函数
要通过跨多列匹配来查找值,可以使用基于 INDEX 和 MATCH 函数的数组公式,并结合 MMULT、TRANSPOSE 和 COLUMN 函数来实现。
如何通过跨多列匹配来查找值?
为了根据上表所示填写每个学生的对应班级信息(其中信息分布在多列中),您可以首先利用 MMULT、TRANSPOSE 和 COLUMN 函数生成一个矩阵数组。然后,MATCH 函数将为您提供查找值的位置,该位置将传递给 INDEX 以检索您在数组中寻找的值。
通用语法
=INDEX(返回区域,(MATCH(1,MMULT(--(查找区域=查找值),TRANSPOSE(COLUMN(查找区域)^0)),0)))
√ 注意:这是一个数组公式,需要您使用 Ctrl + Shift + Enter 来输入。
- 返回区域: 公式将从该区域返回班级信息。这里指的是班级范围。
- 查找值: 公式用来查找其对应班级信息的值。这里指的是给定的名字。
- 查找区域: 包含查找值的单元格区域;与查找值进行比较的值所在的区域。这里指的是名字范围。
- 匹配类型 0: 强制 MATCH 查找第一个等于查找值的值。
要查找 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(TRANSPOSE(COLUMN($C$5:$E$7)^0)^0) = TRANSPOSE(TRANSPOSE({3,4,5}^0)^0): 将数组 {3,4,5} 中的所有数字提升为 0 次幂后,它们都会转换为 1:{1,1,1}。TRANSPOSE 函数随后将列数组转换为行数组,如下所示:{1;1;1}。
- MMULT(MMULT(--($C$5:$E$7=G5),,TRANSPOSE(COLUMN($C$5:$E$7)^0))) = MMULT(MMULT({1,0,0;0,0,0;0,0,0},,{1;1;1})): MMULT 函数返回两个数组的矩阵乘积,如下所示:{1;0;0}。
- MATCH(1,MATCH(1,MMULT(--($C$5:$E$7=G5),TRANSPOSE(COLUMN($C$5:$E$7)^0)),0),0) = MATCH(1,MATCH(1,{1;0;0},0),0): 匹配类型 0 强制 MATCH 函数返回数组 {1;0;0} 中第一个匹配 1 的位置,即 1。
- INDEX($B$5:$B$7$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$B$5:$B$7,,,1): INDEX 函数返回班级范围 $B$5:$B$7 中的第 1 个值,即 A。
为了轻松地通过跨多列匹配查找值,您还可以使用我们的专业 Excel 插件 Kutools For Excel。 请参阅此处的说明以完成任务。
相关功能
Excel INDEX 函数根据给定的区域或数组中的位置返回显示值。
Excel MATCH 函数在单元格范围内搜索特定值,并返回该值的相对位置。
Excel MMULT 函数返回两个数组的矩阵乘积。数组结果具有与 array1 相同的行数和与 array2 相同的列数。
Excel TRANSPOSE 函数旋转范围或数组的方向。例如,它可以将水平排列在行中的表格旋转为垂直排列在列中,反之亦然。
COLUMN 函数返回公式出现的列号或返回给定引用的列号。例如,公式 =COLUMN(BD) 返回 56。
相关公式
在处理包含多列和行标题的大型数据库时,总是很难找到符合多个条件的内容。在这种情况下,您可以使用带有 INDEX 和 MATCH 函数的数组公式。
要在 Excel 中跨行和列搜索内容,或者我们说要在特定行和列的交点处查找值,我们可以借助 INDEX 和 MATCH 函数的帮助。
在某些情况下,您可能需要根据多个条件查找最接近或近似匹配的值。通过结合使用 INDEX、MATCH 和 IF 函数,您可以快速在 Excel 中完成此操作。
最佳的办公生产力工具
Kutools for Excel - 助您脱颖而出
🤖 | Kutools AI 助手:基于智能执行革新数据分析:智能执行 | 生成代码 | 创建自定义公式 | 分析数据并生成图表 | 调用 Kutools 函数… |
热门功能:查找、高亮或标记重复项 | 删除空行 | 合并列或单元格而不丢失数据 | 无需公式四舍五入 ... | |
超级 VLookup:多条件 | 多值 | 跨多表 | 模糊查找... | |
高级下拉列表:简易下拉列表 | 级联下拉列表 | 多选下拉列表... | |
列管理器: 添加指定数量的列 | 移动列 | 切换隐藏列的可见状态 | 比较列以 选择相同和不同单元格 ... | |
特色功能:网格聚焦 | 设计视图 | 增强编辑栏 | 工作簿与工作表管理器 | 资源库(自动文本) | 日期提取 | 合并工作表 | 加密/解密单元格 | 按列表发送电子邮件 | 超级筛选 | 特殊筛选(筛选粗体/斜体/删除线...) ... | |
排名前 15 的工具集:12 个文本工具(添加文本,删除特定字符 ...) | 50+ 种图表 类型(甘特图 ...) | 40+ 实用 公式(基于生日计算年龄 ...) | 19 个插入工具(插入二维码,从路径插入图片 ...) | 12 个转换工具(小写金额转大写,汇率转换 ...) | 7 个合并和拆分工具(高级合并行,拆分 Excel 单元格 ...) | ... 更多功能 |
Kutools for Excel 拥有超过 300 项功能,确保您所需的一切都仅需一键之遥...
Office Tab - 在 Microsoft Office(包括 Excel)中启用标签式阅读和编辑
- 一秒内在数十个打开的文档之间切换!
- 每天为您减少数百次鼠标点击,告别鼠标手。
- 在查看和编辑多个文档时,您的生产力可提升 50%。
- 为 Office(包括 Excel)带来高效标签页,就像 Chrome、Edge 和 Firefox 一样。