学会用MATCH函数这个技巧,你一定会感谢我的!

文摘   教育   2024-11-07 20:01   上海  




欢迎转发和点一下“看”,文末留言互动!

置顶公众号或设为星标及时接收更新不迷路





小伙伴们好,今天来和大家分享一道文本题目。通过我们都很熟悉的一个函数,提供给大家一个新颖的解题思路。

 

原题目是这样子的:





原来是要从文本字符串中提取数字。这个类型的题目我们做过很多,最基本的解题思路就是首先定位到需要提取的数字,确定其长度,最后提取。

 

但是如果打开思路,利用MATCH函数返回某一数据在数组中的相对位置这一特点,我们同样也能够很轻盈地解决这道题目。



01

常规思路的解法





在单元格C2中输入下列公式,三键回车并向下拖曳即可。

=MIDB(MID(A2,MIN(FIND(ROW($1:$10)-1,A2&1/17))+3,100),SEARCHB("?",MID(A2,MIN(FIND(ROW($1:$10)-1,A2&1/17))+3,100)),3)

下面来详细解析一下这条公式。

FIND(ROW($1:$10)-1,A2&1/17)

FIND(ROW($1:$10)-1,A2&1/17)部分,查找0-9这十个数字在字符串A2&1/17中的位置。A2&1/17这样做是因为1/17中包含了全部0-9这十个数字,可以确保FIND函数能够找得到每一个数字。


MIN(FIND(ROW($1:$10)-1,A2&1/17))

利用MIN函数提取出最小值,也就是位置在最左侧的那个数字的位置。


MID(A2,MIN(FIND(ROW($1:$10)-1,A2&1/17))+3,100)

MID函数提取字符串中第一个数值后面的所有字符串。这样,提取出来的字符串中就仅仅只包含所希望提取的数字了。


在源数据中,位置靠左的数值都是两位数的,因此MIN函数的结果再加上3,完美地避开了第一个数值。


SEARCHB("?",MID(A2,MIN(FIND(ROW($1:$10)-1,A2&1/17))+3,100))

这部分,在新生成的字符串中查找第一个数字的位置。这是一个常用技巧。


MIDB(MID(A2,MIN(FIND(ROW($1:$10)-1,A2&1/17))+3,100),SEARCHB("?",MID(A2,MIN(FIND(ROW($1:$10)-1,A2&1/17))+3,100)),3)

后,利用MIDB函数提取目标数字。


注意,第三行中的目标数字是10,但是MIDB函数的第三参数是3,却依然能够正确提取。原因就是10后面跟的“元”是一个双字节字符,而MIDB函数是按字节提取的,它只能返回10和一个空格。正常情况下,是需要在最外侧嵌套一个TRIM函数来去除空格的。



02

MATCH函数的妙用





在单元格C2中输入下列公式,三键回车并向下拖曳即可。

=MATCH(12,FIND(ROW($1:$500)&"元",A2))

 

这个公式来的风轻云淡,十分的写意!


FIND(ROW($1:$500)&"元",A2)

FIND函数部分,利用ROW($1:$500)&"元"组合在源数据中查找生成的500个字符串的位置,并返回一个内存数组,500行1列的一个内存数组。


MATCH(12,FIND(ROW($1:$500)&"元",A2))

MATCH函数,省略第二参数,查找小于等于被查找值的最大值的位置。这里MATCH函数的第一参数“12”可以替换成任意大于等于12的数字,原因是,目标查找值的最大位置是12。或者你也可以直接写一个极大值也行。

 

本期内容练习文件提取方式:

链接:https://pan.baidu.com/s/12zeU4yuwKXcoakj78gN_vg?pwd=jzu3

提取码:jzu3



好了朋友们,今天和大家分享的内容就是这些了!喜欢我的文章请分享、转发、点赞和收藏吧!如有任何问题可以随时私信我哦!


-END-


长按下方二维码关注EXCEL应用之家

面对EXCEL操作问题时不再迷茫无助


我就知道你“在看”


推荐阅读

Excel应用之家
介绍、交流EXCEL各项功能在工作中的实际应用; 为你答疑解惑;分享各类图表、表格和模板;提供有偿代工服务。
 最新文章