送人玫瑰,手有余香,请将文章分享给更多朋友
动手操作是熟练掌握EXCEL的最快捷途径!
【置顶公众号】或者【设为星标】及时接收更新不迷路
小伙伴们好,今天要和大家分享一道关于数字提取的问题。今天要和大家分享的三种解题思路,对于我们今后处理相同类型题目时有很高的指导意义。
题目是这样子的。要求非常简单。
从左侧的源数据中将连续的5位数字提取出来。朋友们有什么好办法吗?
既然是提取一个5位数,那么我们就直接在源数据中查找5位数。查找到后就能够提取出来。
在单元格B2中输入公式“=MIN(IF(ISNUMBER(FIND(ROW($10000:$99999),A2)),ROW($10000:$99999)))”,三键回车并向下拖曳即可。
思路:
FIND(ROW($10000:$99999),A2)部分,在源数据中查找所有的5位数,看看哪些可以查找到
ISNUMBER(FIND(ROW($10000:$99999),A2))部分,对于查找不到的数字,利用ISNUMBER函数将它们转变FALSE
利用IF函数来返回那些查找到的5位数字
最用套用一个MIN函数,返回正确结果
这个公式的最大亮点在于,抛开数字提取的思路,直接查找题目要求的5位数。这个是本题的最大亮点。
正常情况下,我们会考虑用常规的方法来解这道题目。
在单元格B2中输入公式“=LOOKUP(9^9,--MID(A2&"s",ROW($1:$50),5))”并向下拖曳即可。
思路:
既然是提取5位数,那么我们就从源数据中的每一个字符开始,提取一个长度为5的字符串,结果是一个数字和文本组成的内存数组
减负运算后将文本型数字转为数字型数字,将文本转换为错误值
利用LOOKUP函数提取正确答案
在这里源数据后面要加上一个“s”(或者任意一个文本)的目的是,源数据中字符串最后是数字时,将会提取出来若干长度小于5的数字。加上一个“s”将提取出来的长度小于5的数字都转换为文本
最后,在给大家一个小彩蛋。在以前的帖子中我也曾经做过介绍,利用VLOOKUP函数也能够完成这道题目。
在单元格B2中输入公式“=VLOOKUP(,MID(SUBSTITUTE(A2," ",""),ROW($1:$50),5)*{0,1},2,FALSE)”,三键回车并向下拖曳。
思路:
总体上讲,MID函数从每一个字符依次提取长度为5的字符串后,再分别乘以{0,1},形成一个两列的内存数组。若提取出来的5个字符恰好是五位数时,内存数组中第一列则返回0,第二列在返回该5位数字;其余非数字部分则返回错误值。利用VLOOKUP函数查找并返回正确答案。
要注意,在解题时要将源数据中的空格替换掉。朋友们你们知道这是为什么呢?欢迎给我私信留言!
-END-
长按下方二维码关注EXCEL应用之家
面对EXCEL操作问题时不再迷茫无助
我就知道你“在看”
联系客服