
欢迎转发和点一下“在看”,文末留言互动!
置顶公众号或设为星标及时接收更新不迷路

小伙伴们好,今天和大家分享一道文本处理题目。有时候,我们会遇到这样一种情况,根据要求删除一串数字中的某些特定位置上的数字,比如,最后几位或者,相同的某个数字等等。
一般情况下我们会想到使用LEFT函数、RIGHT函数和MID函数等等。一起来看看今天的这道题目如何解答吧!
题目是这样的:

观察一下源数据,题目要求去除掉末尾的几个0。由于数字“0”的个数不同,因此还不能直接简单地使用RIGHT函数。
01
RIGHT函数/LEFT函数配合MATCH函数

在单元格B2中输入下列公式,三键确认后向下拖曳即可。
=LEFT(A7,LEN(A7)-MATCH(1=1,LEFT(RIGHT(A7,ROW($1:$99)))<>"0",)+1)要去除末尾的0,就首先要从右侧提取每个数字。
RIGHT(A7,ROW($1:$99))从右侧提取长度为1、2、3、...、99的字符串。这部分的结果为{"0";"00";".00";"0.00";"50.00";"450.00";"7450.00";"37450.00";"737450.00";...}。
LEFT(RIGHT(A7,ROW($1:$99)))接下来再套用一个LEFT函数。它的结果是{"0";"0";".";"0";"5";"4";"7";"3";"7";"5";"0";"0";"0";"H";…}。你看,通过LEFT函数和RIGHT函数的组合套用,我们从右向左提取到了每一个字符。
MATCH(1=1,LEFT(RIGHT(A7,ROW($1:$99)))<>"0",)将提取到的字符和“0”作比较,再利用MATCH函数确定最后一个不等于“0”的字符的位置。
LEN(A7)-MATCH(1=1,LEFT(RIGHT(A7,ROW($1:$99)))<>"0",)+1用字符串的总长度减去最后一位不为“0”的位置数,再加上1,就是剔除末尾“0”后的字符串的长度。
LEFT(A7,LEN(A7)-MATCH(1=1,LEFT(RIGHT(A7,ROW($1:$99)))<>"0",)+1)最后用LEFT函数提取即可。
02
MID函数配合MATCH函数
下面这条公式则是利用MID函数配合MATCH函数来完成的。
在单元格B2中输入下列公式,三键确认即可。
=LEFT(A2,MATCH(1,0/MID(A2,ROW($1:$30),1))+IF(ISERR(FIND(".",A2)),0,2))上条公式是利用RIGHT函数和LFET函数从右向左来提取单个的数据,而这条公式则是利用MID函数提取源数据中每一个数据。
MID(A2,ROW($1:$30),1)利用MID函数提取每一个数据。
0/MID(A2,ROW($1:$30),1)0/()这个结构使我们经常使用的一个数据处理技巧。它把所有的非零数值都变为0,所有的0值及文本都变为错误值。
MATCH(1,0/MID(A2,ROW($1:$30),1))利用MATCH函数查找最后一个“0”的位置。注意,这里MATCH函数省略第三参数,请注意和我们日常用法的不同。
IF(ISERR(FIND(".",A2)),0,2)由于源数据中最后一项是个特殊项,需要我们特别处理一下。如果在源数据中能够查找到“.”,则需要在MATCH函数的结果上再加上2;如果不能查找到,则不做任何处理,直接返回0值。
LEFT(A2,MATCH(1,0/MID(A2,ROW($1:$30),1))+IF(ISERR(FIND(".",A2)),0,2))最后LEFT函数直接提取即可。
03
从确定分隔符“.”开始
前两条公式都是从判断数字是否为“0”入手的。下面的这条公式则是从分隔符“.”入手。

在单元格B2中输入下列公式,三键确认即可。
=LEFT(A2,MATCH(1,IF(MID(A2,ROW($1:$15),1)=".",1,1/MID(A2,ROW($1:$15),1))))这条公式的核心思想是,找到那个“.”,处理掉它,然后再提取字符串。
MID(A2,ROW($1:$15),1)="."利用MID函数首先将源数据中每个字符都提取出来,然后和“.”作比较。
1/MID(A2,ROW($1:$15),1)这一部分,将MID函数提取出来的字符中,文本和零统统都变成错误值,数字部分仍然是数值。
IF(MID(A2,ROW($1:$15),1)=".",1,1/MID(A2,ROW($1:$15),1))接下来利用IF函数将“.”转换为1,其余的都和1/MID(A2,ROW($1:$15),1)中对应部分保持一致。
MATCH(1,IF(MID(A2,ROW($1:$15),1)=".",1,1/MID(A2,ROW($1:$15),1)))利用MATCH函数查找“1”的位置。
LEFT(A2,MATCH(1,IF(MID(A2,ROW($1:$15),1)=".",1,1/MID(A2,ROW($1:$15),1))))利用LEFT函数来做最后的提取。
好了朋友们,今天和大家分享的内容就是这些了!喜欢我的文章请分享、转发、点赞和收藏吧!如有任何问题可以随时私信我哦!
我就知道你“在看”

夜雨聆风