本文于2023年4月5日首发于本人同名公众号:Excel活学活用,更多文章敬请关注!
Excel查找函数有好几个,我们已介绍过VLOOKUP(Excel 公式函数/查找函数之VLOOKUP),LOOKUP(Excel 公式函数/查找函数之LOOKUP)我们今天来聊聊INDEX+MATCH。
INDEX,它的意思是"索引",我们先来看下它的 用法:INDEX 函数用于返回一个区域或数组中指定行和列的值。公式示例:
=INDEX(array, row_num, [column_num])
array:表示要返回值的数组或范围。
row_num:表示要返回的行号。
column_num:表示要返回的列号(可选,默认为 1)。
MATCH,它的意思是"匹配",在 Excel 中是一种非常有用的函数,它用于查找特定值在数组或范围中的位置。MATCH 函数的语法如下:
=MATCH(lookup_value, lookup_array, [match_type])
lookup_value 表示要查找的值。
lookup_array 表示要在其中查找的数组或范围。
match_type 是可选参数,它指定查找的方式。它有三个可能的值:
0:表示查找与 lookup_value 完全匹配的值。
1 或 省略:表示查找小于或等于 lookup_value 的值。查找范围必须按升序排序。
-1:表示查找大于或等于 lookup_value 的值。查找范围必须按降序排序。
MATCH 函数返回指定值在数组或范围中第一次出现的位置。如果未找到匹配项,则函数返回 #N/A 错误。
我们可以看到,INDEX返回的是一个值,MATCH返回的是一个位置,两者是显著不同的,把它们配对使用,威力是巨大的。
我们来看下例子:
这里我们把INDEX和MATCH函数结合,根据编码,查找表头字段对应的值,不管表头的字段顺序如何变化,它始终能查找到正确的结果。
我们还可以换一种方式,把数据区域,表头,表列都定义为名称:
这里我们要注意的是,MATCH要查找的位置范围的行数,列数,要跟INDEX数据范围的行列数保持一致,否则可能查不到正确的结果。
利用INDEX+MATCH,我们可以很轻松地从一张大表中,摘录自己需要的字段、记录。并且根据需要排列字段的位置。
我们还可以利用INDEX来取得所有工作表的名称,制作一个工作表目录,我们看一个例子:
=IF(ROW(A1)>COUNTA(GetAllNames),"",
HYPERLINK("#"&INDEX(GetAllNames,ROW(A1))&"!A1",
INDEX(GetAllNames,ROW(A1))))
这个公式把所有工作表的名称列出来,
并添加跳转链接
我们先要定义一个名称:GetAllNames
取得所有工作表的名称
=REPLACE(GET.WORKBOOK(1),1,FIND("]",GET.WORKBOOK(1)),)&T(NOW())
不理解的照抄就行
点击相应的单元格即可跳转到相应名称的工作表,怎么样?有点意思吧。我们还可以在其他工作表里插入超链接,回到目录,这样我们进入各个工作表就比较方便了,特别是在表格特别多的情况下。我们甚至可以直接把上面的目录单元格的公式直接粘到各个工作表的某个单位格中,点击可以直接返回目录,当然,前提是保持目录表的位置在最前面。
扯得有点远了,回到正题,INDEX、MATCH函数还有其他用法,但万变不离其宗,都是"定位"的问题,我们就不多展开了,各位有兴趣可以深入研究。
好,今天我们就分享到这里,我们下期再会。
本文于2023年4月5日首发于本人同名公众号:Excel活学活用,更多文章敬请关注!