mid函数不简单,这四个高级用法,你会吗?

Hello,大家好!这次和大家分享mid函数的用法 。mid函数用于提取字符,本身的用法非常简单,使用情形也很有限 。实际工作中,我们经常需要将mid函数和其他函数组合使用 。因此,本文除了介绍mid函数的基础用法 , 还会进一步讲解mid函数与len函数、find函数的组合用法 。


1
基础用法
mid函数从一个字符串的指定位置开始,提取指定数量的字符 。
mid函数的语法为MID(text,start_num,num_chars) 。mid函数从参数text中提取字符串 , start_num表示从哪个位置开始提取字符 , num_chars指提取多少个字符 。
【mid函数不简单,这四个高级用法,你会吗?】如下图所示 , 为mid函数的基础用法示例 。

mid函数不简单,这四个高级用法,你会吗?

(1)B2单元格的公式“=MID(A2,2,3)”,表示从A2单元格的字符串“hello”的第2个字符(即“e”)开始,一共提取3个字符,得到结果“ell” 。
(2)B3单元格从文本“猪猪侠”的第1个字符开始,提取2个字符,得到“猪猪” 。
(3)B4单元格从文本“hello 猪猪侠”的第4个字符(即“l")开始,提取5个字符,得到结果“lo 猪猪” 。需要注意的是,空格也算作一个字符
(4)B5单元格从文本“hello 猪猪侠”的第4个字符开始,提取100个字符 。很显然,从第4个字符开始提?。?剩下的字符数量是不够100个字符的 。此时mid函数会从第4个字符开始,一直提取到最后一个字符 , 因此返回结果“lo 猪猪侠” 。
需要牢记的是,mid函数(包括其他字符提取函数right函数、left函数)返回的结果是文本 。如果mid函数提取的数字需要参与计算,必须将其转化为真正的数值 。这一点将会在下文的示例中进一步说明 。


2
组合用法
mid函数从指定位置提取指定数量的字符 。指定位置、指定数量通常不是直接输入的,而是通过函数计算出来的 。
find函数可以返回一个字符(串)在另一个字符串中的位置 , len函数可以返回字符串的长度 。mid函数经常与find函数、len函数组合使用 。
例1:提取分隔符之后的文本
如下图所示,姓名和ID号之间使用“/”分隔,要求提取ID 。
mid函数不简单,这四个高级用法,你会吗?

想要提取ID , 需要知道分隔符“/”在文本中的位置,然后从下一个字符开始,一直提取到最后一个字符 。可以使用find函数返回“/”的位置 。
以B2单元格的公式为例说明find函数的用法 , “=FIND("/",A2,1)”,表示从A2单元格的文本中查找“/” , 公式中的“1”表示从第一个字符开始查找 。find函数返回“4” , 表示“/”在第4个字符处 。
mid函数不简单,这四个高级用法,你会吗?



如下图所示,B2单元格的公式为
=MID(A2,FIND("/",A2,1) 1,20)
mid函数从“/”的下一个字符开始,提取20个字符 。由于A列的字符数小于20 , 因此mid函数可以提取“/”之后的所有字符 。
mid函数不简单,这四个高级用法,你会吗?



例2:提取两个分隔符之间的文本
如下图所示,姓名、ID、城市之间使用“/”分隔,要求提取ID 。
mid函数不简单,这四个高级用法,你会吗?

想要使用mid函数提取分隔符“/”之间的数字 , 关键是找到“/”在文本中第一次、第二次出现的位置 。
通过例1,我们知道了如何使用find函数找到分隔符“/”第一次出现的位置 。那么如何找到“/”第二次出现的位置呢?
如下图所示,以B2单元格的公式为例,=FIND("/",A2,FIND("/",A2,1) 1),表示在A2单元格中找到“/”出现的位置,但不是从第1个字符开始查找,而是从“/”第一次出现位置的下一个字符开始查找 。FIND("/",A2,1)返回“/”第一次出现的位置,Find函数默认从第1个字符开始查找,因此第三个参数“1”可以省略 。
mid函数不简单,这四个高级用法,你会吗?



知道分隔符“/”两次出现的位置分别在哪里,再使用mid函数提取分隔符之间的数字就比较简单了 。如下图所示,B2单元格的公式为:=MID(A2,FIND("/",A2) 1,FIND("/",A2,FIND("/",A2) 1)-FIND("/",A2)-1)
公式的原理就是:mid(A2,"/"第一次出现的位置 1,"/"第二次出现的位置-第一次出现的位置-1)
mid函数不简单,这四个高级用法,你会吗?



例3:提取数字
如下图所示,姓名和ID之间以“/”分隔,ID全部为数字,ID和描述之间没有分隔符号 。那么如何提取数字ID呢?
mid函数不简单,这四个高级用法,你会吗?

使用mid函数提取数字,起始位置是“/”的下一个字符,用find函数即可找到起始位置 。但是如何找到数字的个数呢?我们可以使用len函数、lenb函数 。
如下图所示 , len函数可以返回字符数量 。A2单元格中有10个字符;A3单元格中有14个字符 。
mid函数不简单,这四个高级用法,你会吗?



如下图所示,lenb函数可以返回字节数量 。一个汉字是两个字节,一个字母或数字是1个字节,“/”也是一个字节 。lenb(A2)返回结果“15”,len(A2)返回结果“10”,相差的“5”就是汉字的个数 。
mid函数不简单,这四个高级用法,你会吗?



如下图所示,B2单元格的公式“=2*LEN(A2)-LENB(A2)-1”返回的就是A2单元格数字的个数 。“lenb(A2)-len(A2)”返回汉字的个数,总字符数量len(A2)减去汉字的个数就是(数字 “/”)的个数,再减去1就得到数字的个数 。
mid函数不简单,这四个高级用法,你会吗?



因此,使用mid函数提取数字的公式为:


=MID(A2,FIND("/",A2) 1,2*LEN(A2)-LENB(A2)-1)


mid函数不简单,这四个高级用法,你会吗?



例4:将提取的数字转化为可以计算的数值
如下图所示,A列是姓名、金额、城市三个信息的混合文本,要求提取金额 。
从例2中,我们知道mid find函数组合可以提取两个分隔符之间的数字 。下图中B列的公式表面来看是没有什么问题的 。
mid函数不简单,这四个高级用法,你会吗?



但是如果对提取的金额求和 , SUM函数返回的值却是0 。原因是mid返回的结果是文本,对文本求和,结果自然为0 。
mid函数不简单,这四个高级用法,你会吗?

如果mid函数提取的数字需要进一步计算 , 需要将其转化为真正的数值 。将文本型数值转换为真正的数值有多种方法 。在本例中,在mid函数前添加“--”(即两个负号)就可以将结果转化为真正的数值 。
如下图所示 , B2单元格的公式为:
=--MID(A2,FIND("/",A2) 1,FIND("/",A2,FIND("/",A2) 1)-FIND("/",A2)-1)
在mid函数提取的结果前添加两个负号,将文本转化为可以计算的数值 。
mid函数不简单,这四个高级用法,你会吗?

相关经验推荐