送人玫瑰,手有余香,请将文章分享给更多朋友
动手操作是熟练掌握EXCEL的最快捷途径!
【置顶公众号】或者【设为星标】及时接收更新不迷路
小伙伴们好,今天要和大家分享一道稍微复杂一点的数据提取问题。之所以分享它,是因为它的解题思路给我们今后处理同类型的题目提供了借鉴。
好了,话不多说,请看题目。
观察一下源数据。源数据中并没有特别的规律,因此常用的方法不能够定位到数字的准确位置,也就不能提取数字了。
思考十秒钟,这种情况下该如何处理呢?
之前有一篇帖子是介绍如何对一串文本中的数字求和的,那篇文章中使用的FREQUENCY函数的方法就可以借鉴用在这里。
在单元格E2中输入公式“=IFERROR(INDEX(MOD(SMALL(IFERROR(--RIGHT(LEFT($A2,ROW($1:$50)-1),FREQUENCY(ROW($1:$50),ISERROR(-MID($A2,ROW($1:$50),1))*ROW($1:$50))-1)+ROW($1:$50)*10^4,""),ROW($1:$50)),10^4), COLUMN(A:A)),"")”,三键回车后向右向下拖曳即可。
思路:
RIGHT(LEFT($A2,ROW($1:$50)-1),FREQUENCY(ROW($1:$50),ISERROR(-MID($A2,ROW($1:$50),1))*ROW($1:$50))-1)部分,是利用FREQUENCY函数将文本字符串中的数字提取到,结果为{#VALUE!;#VALUE!;#VALUE!;"369";#VALUE!;#VALUE!;#VALUE!;#VALUE!;"1234";"";#VALUE!;#VALUE!;"56";"";"";"";"";"";#VALUE!;#VALUE!;#VALUE!;"789";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";#N/A}。大家注意看,字符串中的数字已经被单独提取到了。
关于这个方法的详细介绍,请参看帖子华山论剑:数字提取技术谁更强,应用之家帮你忙
对上述结果减负运算后,将文本型数字转换为数字型数字。然后对其加权。加上ROW($1:$50)*10^4的目的,是可以按照当前数字的排列顺序进行从小到大的排序
接下来,IFERROR函数将错误值转换为空值
SMALL函数按从小到大顺序排序
MOD函数对10^4求余,得到的结果就是我们从文本字符串中提取到的数字。上面所有步骤结束后,数字已经按照在文本字符串中的顺序排序了。结果如下。{369;1234;56;789;#NUM!;…;#NUM!}
接下来就简单多了。将上述结果套用一个INDEX函数,进行数字提取
最外成套用IFERROR函数屏蔽错误值。
-END-
长按下方二维码关注EXCEL应用之家
面对EXCEL操作问题时不再迷茫无助
我就知道你“在看”
联系客服