match函数简单介绍以及与index函数结合应用

Python016

match函数简单介绍以及与index函数结合应用,第1张

Match函数:返回指定方式下与指定数值匹配的元素相应位置

Match函数

功能:match函数用于返回在指定方式下与指定数值匹配的数组中元素的相应位置。

函数格式:match(数据表中查找的数值,包含所要查找数值的连续单元格区域,查找类型)

其中查找类型为数字 -1/0/1 ,指明如何在包含所要查找数值的连续单元格区域

当查找类型为 1 或者省略时,函数就查找小于或者等于包含所要查找数值的连续单元格区域的最大数值,此时包含所要查找数值的连续单元格区域必须按照升序排列。

当查找类型为 0 时,函数就查找等于包含所要查找数值的连续单元格区域的第一个数值,此时包含所要查找数值的连续单元格区域可以按照任何顺序排列。

当查找类型为 -1 时,函数就查找大于或者等于包含所要查找数值的连续单元格区域的最小数值,此时包含所要查找数值的连续单元格区域可以按照降序排列。

实际应用中我们应用到的查找类型基本上是0,我们也主要来熟悉这个应用。

例1:查找目标数据的位置

要求:使用match函数返回目标数据给定的单元格区域中的位置。

查找“储君老师”所在A列(或者说是A1:A11所在的位置)

步骤:将光标定在G2单元格中,输入公式: = MATCH("储君老师",A1:A11) ,按enter键即可返回“储君老师”所在的位置。

(在A1:A11单元格区域中查找“储君老师”,并返回其在A1:A11这一列的第几行。)

例2:查找指定消费者是否发放奖品

Match+index函数配合使用的可以实现对目标数据的查询并返回其值。继续沿用上面的例子进行分析

查找神灯是否发放奖品

将光标置于H2中,输入公式: =INDEX(A1:E11,MATCH(G2,A1:A11),5) 【或者 =INDEX(A1:E11,MATCH(G2,A1:A11,0),5) ,由于查找的是“神灯”这个文本在A1:A11中位置,就不涉及到查找类型中的数值问题。另外MATCH(G2,A1:A11)中的G2能不能换成A2?当然是可以的,因为A2和G2都是“神灯”这个文本,结果是一致的,不过既然G2给出了条件,那就用G2呗】,按enter键即可返回“神灯是否发放奖品”的结果。

公式拆解

MATCH(G2,A1:A11)

在A1:A11中查找G2单元格中值,并返回其位置(位于这一列的第几行中)

INDEX(A1:E11,2,5)

上一步 MATCH(G2,A1:A11) 结果等于2,即“神灯”位于A1:A11这一列的第2行,那么 INDEX(A1:E11,2,5) 就是返回A1:E11这个单元格区域中第2行第5列交叉处的值,没错就是E2单元格的值,也就是“发放”喽。

你可能会说这个用Match+index函数干啥,我用vlookup或者lookup更直接,是的,主要是为了帮助大家理解Match+index。

那么我们再来看看下面这一个例子Match+index的应用。

例3:查找指定月份指定品牌的利润

步骤:将光标置于C15单元格中,输入公式 =INDEX(B1:E12,MATCH(B15,A1:A12,0),MATCH(A15,B1:E1,0)) ,按enter即可得到品牌“帝卡 男”在“7月”的利润。在查找其他品牌、指定月份的利润额时,输入品牌和月份,即可获得想要查询的结果。

公式拆解

MATCH(B15,A1:A12,0) :查询B15单元格即是品牌“帝卡 男”在A1:A12单元格区域中的位置,很容易知道品牌“帝卡男” 在这一列A1:A12单元格区域中的第5行,即是A5单元格的内容。

MATCH(A15,B1:E1,0) :查询A15单元格即是月份“7月”在B1:E1单元格区域中的位置,很容易知道月份“7月”在这一行B1:E1单元格区域中的第2列,即是C2单元格的内容。

INDEX(B1:E12,MATCH(B15,A1:A12,0),MATCH(A15,B1:E1,0))=index(B1:E12,5,2)

现在可以很清楚的看到,查询的是B1:E12单元格区域的第5行,第2列内容。没错就是C5单元格中的值了。

上次有同学问我match一会儿在列查找,一会儿在行查找,怎么理解,记住一点就行,包含所要查找数值的连续单元格区域为列时即上面的 MATCH(B15,A1:A12,0) ,查找品牌“帝卡男” 在这一列A1:A12单元格区域中的位置, 一看查找的包含所要查找数值的连续单元格区域即A1:A12为列,那么就是找数据表中查找的数值即B15里面的值(“帝卡 男”)在这一列的第几行。

当包含所要查找数值的连续单元格区域为行时即上面的 MATCH(A15,B1:E1,0) ,月份“7月”在这一行B1:E1单元格区域中的位置, 一看查找的包含所要查找数值的连续单元格区域即B1:E1为行,那么就是找数据表中查找的数值即A15里面的值(“7月”)在这一行的第几列。

即是:包含所要查找数值的连续单元格区域为 行 时,就是查找数据表中查找的数值在包含所要查找数值的连续单元格区域 第几列 。【7月在B1:E1这一行的第几列】

包含所要查找数值的连续单元格区域 为 列 时,就是查找数据表中查找的数值在包含所要查找数值的连续单元格区域 第几行 。【“帝卡 男”在A1:A12这一列的第几行】

不知道你理解了没有,回去再看看储君老师的vlookup和match函数的结合运用,争取融会贯通。另外match函数和vlookup函数在很多情况是通用的,小伙伴们赶紧来试试!

R语言中,match:匹配两个向量,返回x中元素在table中的索引或TRUE、FALSE。

match函数使用格式有如下两种:

第一种方便设置参数,返回x中元素在table中的位置,示例如下:

match(x, table, nomatch = NA_integer_, incomparables = NULL)

第二种简洁型,返回x中每个元素在table中是否存在

x %in% table

x: 向量, 要匹配的值

table: 向量, 被匹配的值

nomatch: 没匹配上的返回值, 必须是整数

incomparables: 指定不能用来匹配的值.

match的匹配,限于相同类型,如果类型不同,要先进行强制类型转换,而后才能进行匹配。