总结篇-MATCH函数使用终极帖

点击上方右侧“EXCEL应用之家”蓝字关注微信公众号

点击文章底部“阅读原文”可领取阅读红包;模板文档可免费获取

送人玫瑰,手有余香,请将文章分享给更多朋友

动手操作是熟练掌握EXCEL的最快捷途径!

MATCH函数是Excel中最常用、最重要的函数之一。MATCH函数和ROW函数、OFFSET函数配合使用,可以取得令人意想不到的结果。

5月份时有一个帖子已经介绍了MATCH函数的主要用法。最近几篇帖子中也不断提到MATCH函数和INDEX函数、VLOOKUP函数以及OFFSET函数的总和应用。下面,就让你我们一起来回顾一下他都有哪些重要的用法吧!

用法一:查找数值的位置

这个例子中我们想知道数字4在数列中的位置,那么在A5单元格中输入“=MATCH(4,$A$3:$E$3,0)”就可以了。函数返回的结果“4”是位置序号,表面数字“4”在这个序列中的位置是第四位。

思路:在这个公式中,参数“0”表示查找等于被查找值“4”的第一个数值的位置。

用法二:判定重复值

此例中,单元格区域A9:A18中有重复的数据,我们在C9单元格中输入“=IF(MATCH(A9,$A$9:$A$18,0)=ROW()-8,"","重复")”,下拉即可。

思路

  • 函数以单元格A9中的“甲”在单元格区域A9:A18中搜索,并返回位置数“1”。如有重复值,返回的位置是该数据第一次出现时的位置。

  • row()-8的含义是,在单元格区域A9:A18中,当前数据是第几行。在当前行(第9行)减去8,即为第“1”行。

  • 当以上两个相等时,表明没有重复数据;当不相等时,即有重复的数据了。

  • 再用if函数判断并返回“重复”标记。

用法三:求第n大不重复的值

此例中,单元额区域A24:A33中有重复的数据。我们分别求出第一到第四大的数据。在单元格E24中输入“=LARGE(IF(MATCH($A$24:$A$33,$A$24:$A$33,0)=ROW($A$24:$A$33)-23,$A$24:$A$33),ROW()-23)”,并三键回车,向下拖曳。

思路:

  • 首先,match函数对区域中的每一个值都进行搜索并返回位置,形成一个新的数组

  • 再和每个数据所在行的行号row()减去23的结果相对比(即在此单元格区域A24:A33中当前数据是第几行),并利用if函数返回结果为“相等”所对应的单元额区域A24:A33中的数据

  • 最后用large函数来返回第n大的值。row()-23决定了是第“几”大的数据

用法四:反向查找

之前我们介绍过用if函数利用{1,0}创建一个新的数组,以用来做反向查找。这里,match函数和offset函数配合使用,也可以达到反向查找的目的。

在单元格E39中我们输入“=OFFSET($A$37,MATCH(D38,$B$38:$B$46,0),0)”,三键回车并向下拖曳即可。

思路:

  • 利用match函数首先判断查找值在数列中的位置

  • 将此位置的值作为offset函数向下移位的参数

用法五:提取不重复清单

在此例中,单元格区域A51:A60中有重复的数据,在单元格C51中输入

“=OFFSET($A$50,SMALL(IF(MATCH($A$51:$A$60,$A$51:$A$60,0)=ROW($A$51:$A$60)-50,ROW($A$51:$A$60)-50),ROW()-50),0)”,并三键回车,向下拖曳即可。

思路:

  • 首先利用match函数查找区域内数据的位置,并和row()函数对比,在利用if函数返回不重复值所对应的在当前区域中的行号

  • 利用small函数来提取第1小,第2小等等,并作为offset函数的参数

用法六:中国式排名

在中国式排名中,无论有几个并列,之后的排名仍然顺位排列。即无论有多少个第二名并列,之后的排名仍然是第三名。

我们在单元格C2中输入

“=SUM(--IF($A$2:$A$11>=A2,MATCH($A$2:$A$11,$A$2:$A$11,0)=ROW($2:$11)-1))”并向下拖曳即可。

思路:

  • MATCH($A$2:$A$11,$A$2:$A$11,0)返回{1;2;3;3;5;5;7;8;9;9};ROW($2:$11)-1返回{1;2;3;4;5;6;7;8;9;10};MATCH=ROW对比的结果是{TRUE;TRUE;TRUE;FALSE;TRUE;FALSE;TRUE;TRUE;TRUE;FALSE}

  • $A$2:$A$11>=A2返回的结果是{TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE},它表明在$A$2:$A$11中有10个数据大于等于A2中的数据

  • 利用IF函数逻辑值判断为真时,返回上面MATCH=ROW相比的结果{TRUE;TRUE;TRUE;FALSE;TRUE;FALSE;TRUE;TRUE;TRUE;FALSE}

  • 利用“--”运算得到{1;1;1;0;1;0;1;1;1;0}

  • 利用SUM函数求和得到“7”,表示A2单元格中的数值排名第七名

  • 其它单元格分析类似

  • 当有重复值时,由于MATCH函数总是返回查找到的第一个值,因此重复值的排名总是和第一个出现的重复值相同。因此实现了中国式排名

用法七:和ADDRESS函数组合动态查找单元格地址

如下例,在已知姓名和学科的情况下,查询成绩的地址,并返回成绩。

我们在单元格G5中输入

“=ADDRESS(MATCH($G$2,$A$2:$A$8,0)+1,MATCH($G$3,$B$1:$D$1,0)+1)”

思路:

  • 根据单元格G2和G3中的姓名和学科,可以利用MATCH函数查询到姓名和学科所在的行和列

  • 由于姓名和学科的搜索区域都是从第二行和第二列开始的,因此返回的行号和列号都比实际的行号和列号少1,所以要分别给他们加1

  • 利用ADDRESS函数取得位置信息

  • 在G4单元格中,利用INDIRECT函数返回成绩

用法八:和INDEX函数或OFFSET函数组合实现动态查找

下列中,我们需要按照姓名和学科来查询成绩。具体步骤如下:

步骤一:在单元格区域A11:B14中通过数据验证建立下拉清单。

步骤二:在单元格C11中输入并下拉即可

“=INDEX($A$1:$D$8,MATCH(A12,$A$1:$A$8,0),MATCH(B12,$A$1:$D$1,0))”

思路:

  • 利用MATCH函数分别确定姓名和学科在第几行和第几列,并以此作为INDEX函数的输入参数

  • INDEX函数取得指定单元格的引用

注意:INDEX函数不支持生成内存数组,因此只能在多单元格数组公式中正常使用。

而下面是一份销售清单,要求依据单元格A12选择的产品,动态地计算“销售总量”。

步骤一:通过“数据验证”在单元格A12中插入产品下拉清单

步骤二:在单元格B12中输入即可

“=SUM(OFFSET($B$1,MATCH($A$12,$A$2:$A$7,0),0,1,6))”

思路:

  • 利用MATCH函数确定单元格A12中的产品在清单中的第几行

  • 以单元格B1位基准,利用OFFSET函数进行位移。MATCH函数返回的值为向下移动的行数,0表示没有左右移动;移动完成后的区域为一行、六列

  • SUM函数求和

用法九:和VLOOKUP函数组合实现动态查找

下面这个例子,就很好地演示了如何进行动态的查找。

步骤一:在单元格区域A12:A13和B12:B13中分别建立下拉清单

步骤二:在单元格C12中输入

“=VLOOKUP(A12,$A$1:$D$8,MATCH(B12,$A$1:$D$1,0),FALSE)”

步骤三:在单元格C13中输入

“=HLOOKUP(B13,$A$1:$D$8,MATCH(A13,$A$1:$A$8,0),FALSE)”

思路:我们以VLOOKUP函数为例:

  • VLOOKUP函数的第三个参数是指目标值在所在区域中的第几列。此例中,这个参数的值由MATCH函数返回

  • MATCH函数的返回值决定于单元格B12中的科目在搜索区域A1:D1中的位置

大家要多多动手操作,才能更快地掌握这些技巧!

-END-

欢迎关注【Excel应用之家】专栏,了解更多的Excel实际应用技能,尽在Excel应用之家!

版权声明:本文归Excel应用之家专栏(微信公众号Excel应用之家)原创撰写,未经允许不得转载。欢迎关注专栏/公众号。

(0)

相关推荐

  • 练习题048:用公式进行数据转置(函数公式)

    原始数据表如下图中的B2:B38所示,现要求用函数编制公式,将其转置为F2:M8的样式. 要求:用一个公式可往右往下填充完成H3:M8单元格区域的公式. 公式1: 由于各区域的城市都是固定的六个城市, ...

  • 按指定次数重复内容的套路合集

    -套路合集- 按指定次数重复内容 1.vlookup精确查找(4参为0) 如下图所示,B列的是要重复的内容,C列是要重复的次数,最后想要的效果是E列那样.A重复2次,B重复3次...... 首先在A列 ...

  • Excel公式练习97:返回列表中第一个和最后一个出现的值之差

    excelperfect 引言:本文的练习整理自chandoo.org.多一些练习,想想自己怎么解决问题,看看别人又是怎么解决的,能够快速提高Excel公式编写水平. 本次的练习是:示例数据如下图1所 ...

  • 精通Excel数组公式14:使用INDEX函数和OFFSET函数创建动态单元格区域

    excelperfect 动态单元格区域是指当添加或删除源数据时,或者随着包含单元格区域的公式被向下复制时根据某条件更改,可以自动扩展或收缩的单元格区域,可以用于公式.图表.数据透视表和其他位置. 那 ...

  • 总结篇--INDIRECT函数使用终极帖

    蓝色 动手操作是熟练掌握EXCEL的最快捷途径! 在EXCEL中有这样一个特别的函数--INDIRECT函数,它的功能是间接引用.然而,在做好本职工作的前提下,INDIRECT函数在其它方面的应用发挥 ...

  • 总结篇--FREQUENCY函数使用终极帖

    来源:Excel应用之家 很多小伙伴们可能是第一次听说FREQUENCY这个函数.FREQUENCY这个函数是EXCEL最重要的函数之一,掌握了它,你就掌握了打开更高水平之门的钥匙.FREQUENCY ...

  • 总结篇--SUBSTITUTE函数实用终极帖

    来源:Excel应用之家 SUBSTITUTE函数是EXCEL常用的文本函数之一,常用于字符串的提取等操作.今天就让我们再一次来重温一下他都有哪些用法吧! 01 文本替换 下例中,以"金庸& ...

  • 总结篇--COUNTIF函数实用终极帖

    点击上方 蓝色 文字  关注我们吧! 送人玫瑰,手有余香,请将文章分享给更多朋友 动手操作是熟练掌握EXCEL的最快捷途径! COUNTIF函数主要用于统计满足某个条件的单元格的个数.其基本用法已经在 ...

  • 总结篇--SUMIF函数实用终极帖

    点击上方 蓝色 文字  关注我们吧! 送人玫瑰,手有余香,请将文章分享给更多朋友 动手操作是熟练掌握EXCEL的最快捷途径! 朋友们今天向大家介绍一期SUMIF函数的应用技巧. 这个函数用于对区域中符 ...

  • 总结篇--SUBSTITU函数实用终极帖

    点击上方 蓝色 文字  关注我们吧! 送人玫瑰,手有余香,请将文章分享给更多朋友 动手操作是熟练掌握EXCEL的最快捷途径! SUBSTITUTE函数是EXCEL常用的文本函数之一,常用于字符串的提取 ...

  • 总结篇--TEXT函数使用终极帖

    点击上方 蓝色 文字  关注我们吧! 送人玫瑰,手有余香,请将文章分享给更多朋友 动手操作是熟练掌握EXCEL的最快捷途径! 在如何转换[中文大写金额]这篇帖子中我简单介绍了TEXT函数的语法结构,并 ...

  • 总结篇-LOOKUP函数实用终极帖

    点击上方 蓝色 文字  关注我们吧! 送人玫瑰,手有余香,请将文章分享给更多朋友 动手操作是熟练掌握EXCEL的最快捷途径! 在EXCEL的查找函数中,除了我们都知道的大名鼎鼎的VLOOKUP函数外, ...

  • 总结篇-IF函数实用终极帖

    点击上方 蓝色 文字  关注我们吧! 送人玫瑰,手有余香,请将文章分享给更多朋友 动手操作是熟练掌握EXCEL的最快捷途径! IF函数就是EXCEL界的初恋情人.每一个学习EXCEL的人,十有八九最先 ...