文本提取函数mid的用法
之前我们说过从左提取函数left的用法,今天说下它的兄弟函数mid的用法。
-01-
函数说明
MID函数返回文本字符串中从指定位置开始的特定数目的字符,该数目由用户指定。
它的语法结构如下:MID(text, start_num, num_chars)
有3个参数,参数中没有中括号,都是必须要写的。
text 必需。包含要提取字符的文本字符串。
start_num 必需。文本中要提取的第一个字符的位置。
num_chars 必需。指定希望 MID 从文本中返回字符的个数。
简单理解就是mid(文本字符串,从第几个字符提取,提取几位)
这个函数也有几点注意事项:
如果 start_num 大于文本长度,则 MID 返回空文本 ("")。
如果 start_num 小于文本长度,但 start_num 加上 num_chars 超过了文本的长度,则 MID 只返回至多直到文本末尾的字符。
如果 start_num 小于 1,则 MID 返回 错误值 #VALUE!。
如果 num_chars 为负数,则 MID 返回 错误值 #VALUE!。
-02-
示例解释
如下图所示,在B1单元格中输入如下公式,结果为“excel”。函数的意思是在A1单元格的字符串中,从第4个字符开始提取,也就是“e”,提取5位,刚好是“excel”,从“e”开始算作第1位。
如下图所示,在B1单元格中输入如下公式,结果为空“”。为什么会这样呢?现在函数是从第9个字符开始提取,但A1单元格字符数总共才是8。所以会返回空,符合注意事项的第1条。
如下图所示,在B1单元格中输入如下公式,结果还是“excel”。还是从第4个字符开始提取,提取的位数为7位。但是从e开始算后面只有5位了。所以只能提到这5位。符合注意事项的第2条。
最后2条注意事项,希望你自己测试一下。下面看具体应用。
-03-
具体应用
1.根据身份证号提取出生日期
下面是我乱编的几个身份证号,我们知道身份证号中包含出生日期,所以提取很简单,在B4单元格中输入公式=MID(A4,7,8)。从第7位提取8位,就是出生日期。
但是你会发现这样提取出来的出生日期不是标准的日期格式。需要用text函数将其转化成日期格式,公式为=TEXT(MID(A4,7,8),"0-00-00"),向下拖动。
2.根据身份证号判断性别
我们知道身份证倒数第2位,也就是第17位可以判断性别。如果是奇数为男,偶数为女。第一步,先将第17位提取出来,如下图。
第二步要判断是奇数还是偶数用mod函数,公式为=MOD(MID(A4,17,1),2)。mod是求余函数,后面会讲。这里简单提一下。我们知道奇数除2,余数肯定为1;偶数除2,余数肯定为0。
第三步,用if判断,如果是1,就为男;否则为女。公式为=IF(MOD(MID(A4,17,1),2),"男","女")。如果你需要录入身份证号,还要录入性别,那么用这条公式,性别自动计算出来。
3.提取数字
A列中是一些字符串,现在要将其中的数字提取出来。在B10单元格中输入公式=MAX(IFERROR(--MID(A10,ROW($1:$20),TRANSPOSE(ROW($1:$20))),))。数组公式,要按ctrl+shift+enter。
这个公式中用到了数组,看起来有点复杂,实际也好理解。思路是这样的:从第1个字符提1位,2位,...直到20位;然后从第2个字符提1位,2位,...直到20位;...直到从第20个字符提1位,2位,...直到20位。
然后用--进行数学运算,把文本数字转为数字,文字转成错误值。后面用iferror将错误值改成0,最后用max提取最大值,就是我们要的数字。
这里的重点是mid第2和第3参数都是2个一维数组,并且是方向不同的一维数组,这样就会形成一个二维数组。数组以后我们也会讲的。
好了,今天的mid函数就到这里了。你都学会了吗?
如果喜欢的话,请转发和打赏,你们的支持就是我坚持的动力!