字符提取Mid、Left、Right三兄弟,超实用!( 二 )
地区码
文章图片
根据前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)判断奇数跟偶数 。
网友:这后面两条公式太巧妙了!
卢子:毕竟像这种公式可遇不可求 , 并不是任何人都可以想到的 。 学习阶段可以让公式缩减到最少字符 , 但实际工作还是以正常思维处理为好 , 以防考虑不周全而出错 。
网友:收到 , 看来卢子还是属于比较严谨的人 。
【字符提取Mid、Left、Right三兄弟,超实用!】
VIP
888
元 , 一次报名 , 所有视频课程 , 终生免费学 , 提供一年在线答疑服务 。