1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 字符提取Mid Left Right三兄弟 超实用!

字符提取Mid Left Right三兄弟 超实用!

时间:2022-09-16 11:47:15

相关推荐

字符提取Mid Left Right三兄弟 超实用!

卢子:提到字符提取,不得不提到Mid、Left、Right三兄弟,不管什么字符到他们手工,都能按要求完美地提取出来。老大Left可以从左边提取字符,老二Right可以从右边提取字符,老三Mid天赋最好,可以从任何位置提取字符。

网友:既然这样就学Mid就行,何必全部都学。

卢子:在函数的世界里,讲究合作精神,即使你再强大,也不能忽略别人的作用。其实做人又何尝不是这样,你能力好也不能看不起别人,因为别人通过努力也能成为有能力的人。

网友:说的也是,现在讲究的是团队合作的精神,一个人如果离开团队,再牛逼也没用。

卢子:那就通过几个例子来说明这三兄弟。

1.通过软件截图,默认情况下会出现软件名、时间、后缀,怎么将他们分别提取出来。

提取左边6位,也就是软件名。

=LEFT(A2,6)

从中间第8位开始提取14位,刚好就是时间。

=MID(A2,8,14)

从右边提取3位,就是后缀。

=RIGHT(A2,3)

2.前面提到的是最理想状态,很多时候软件名不确定,后缀字符个数不确定,这样仅仅通过简单的办法是无法满足的,结合Find、Len函数会使问题变得简单。

通过观察,软件名后面都有“_”符号,利用FIND找到这个符号的位置,减去1就是软件名最后一个字符的位置。

=LEFT(A2,FIND("_",A2)-1)

时间都是在“_”的后面,利用FIND找到这个符号的位置,加上1就是第一个数字的位置,因为是固定14位,提取字符数14就可以。

=MID(A2,FIND("_",A2)+1,14)后缀在“.”符号后面,后缀字符数就是总字符减去到“.”符号位置的总长度。也就是说

N=总字符 - “.”符号的位置FIND(".",A2)

N=LEN(A2)-FIND(".",A2)

=RIGHT(A2,LEN(A2)-FIND(".",A2))

3.身份证是每个成年人的名片,有了它,可以获取省份、地区、出生日期、性别等信息。身份证很重要,要记得妥善保管好。

身份证简介:

现行的身份证全部是18位,早期的是15位。

前2位代表省份;

前6位代表地区码;

15位7-12位是出生年月,前面省略19,18位是7-14位是出生年月;

15位13-15位是代表性别,18位是15-17位是代表性别,奇数就是男,偶数就是女;

现行的身份证,18位号码是验证码。

通过这些知道,要知道省份跟地区码必须有一份地区码的明细表才可以获取。

地区码

根据前2位代表省份,前6位代表地区码。

=VLOOKUP(LEFT(A2,2),地区码!A:B,2,0)

先用Left提取左边两个字符,用Vlookup获取省份对应值,同理可以获取地区。

=VLOOKUP(LEFT(A2,6),地区码!A:B,2,0)

回头看看出生年月日:15位7-12位是出生年月,前面省略19,18位是7-14位是出生年月。

=TEXT(IF(LEN(A2)=15,19,"")&MID(A2,7,IF(LEN(A2)=15,6,8)),"0-00-00")

先判断是不是15位,如果是前面就连接19,否则连接空,IF(LEN(A2)=15,19,"")

如果是15位就提取6位,否则就提取8位IF(LEN(A2)=15,6,8)

IF(LEN(A2)=15,19,"")&MID(A2,7,IF(LEN(A2)=15,6,8)),到这里就是将出生日期变成统一8位的格式如19870905

利用Text将8位的日期格式显示成1987-09-05

这是传统的思路,但其实可以将公式再做精简,得到的结果需要将单元格设置为日期格式。

=TEXT(MID(A2,7,11)-500,"#-00-00,")*1

网友:-500,还有#-00-00,是干嘛用的?

卢子:先来看看这几条公式

=TEXT(1999,"#,")显示2

=TEXT(1499,"#,")显示1

=TEXT(1001,"#,")显示1

=TEXT(501,"#,")显示1

也就是说这个“,”的作用就是将数字除以1000并四舍五入的结果,也就是千位符。

再回头看看MID(A2,7,11),不管是15还是18位身份证,从7位开始提取11位就是将提取到日期跟性别组成的所有数字。实际后面的3位是多余的,需要去除。TEXT(MID(A2,7,11)-500,"#-00-00,"),-500的作用就是将后面的数字变成小于500的数字,加上最后面的“,”,其实就是舍去掉最后3位,前面多取了3位,现在还回去,有借有还。

网友:如果这样直接后面3位不提取不就得,干嘛绕那么多弯。

卢子:如果不提取是不是要像最开始一样判断是不是15,然后再决定取多少位,这样反而多了一个判断条件。不过这条公式有一个缺陷,就是当1930年前出生的人如290815会显示错误。不过正常这种年龄的人,你用他们的身份证还有意义吗,你懂的。一直以来我都觉得,写公式就是一个不断取巧的过程。

15位13-15位是代表性别,18位是15-17位是代表性别,奇数就是男,偶数就是女。

=IF(ISODD(MID(A2,15,3)),"男","女")

奇数偶数的判断可以利用最后1位判断,也可以通过所有字符判断。如123,最后1位是奇数,它就是奇数,跟整个数字判断的结果是一样的。

MID(A2,15,3)提取15位的最后1位,跟提取18位的3位数字

ISODD(MID(A2,15,3)),ISODD判断数字是不是奇数,是就返回TRUE,否则返回FALSE

IF就是返回男女的对应值

说明:在低版本用MOD(数字,2)判断奇数跟偶数。

网友:这后面两条公式太巧妙了!

卢子:毕竟像这种公式可遇不可求,并不是任何人都可以想到的。学习阶段可以让公式缩减到最少字符,但实际工作还是以正常思维处理为好,以防考虑不周全而出错。

网友:收到,看来卢子还是属于比较严谨的人。

推荐:为什么你经常加班?看完这6个Excel字符提取的案例就明白了

上篇:Excel一键分行,别再只会复制粘贴了!

有粉丝说,你这样每天分享文章,光看文章就可以把Excel学精通了,就没人报名你的课程。

其实,我很久以前也说过,只要你坚持看文章三五年也可以成为高手。而报名课程会缩短时间,课程更全面,而且随时有答疑老师指导,一年就可以学得很厉害。

说白了,就是用点小钱换你的时间而已,如果你的时间比较值钱,报名课程是最划算的。

如果你有一大堆时间,闲得不知道如何安排,那可以看书或者看文章慢慢学,适合自己的就是最好的。

京东满100减50活动,今天好像是最后一天,还没买书的记得买。

作者:卢子,清华畅销书作者,《Excel效率手册 早做完,不加班》系列丛书创始人,个人公众号:Excel不加班(ID:Excelbujiaban)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。