Excel字符串中提取数字,5种方法够不够

其实我不太理解为什么会有那么多汉字和数字混合存在,而后又要想方设法把其中的数字提取出来 。录入数据的时候不能分开吗?
当然,这个世界不能理解的事情太多了,毕竟个人是那么的渺小 , 见识是那么的浅薄 。
无论如何 , 提取数字这个话题还是值得研究研究 。


结构明确

这是最简单的情况 , 字符串中数字的位置和长度都固定且已知,用字符提取函数直接提取即可:
=RIGHT(B3,3)
提取最右边的3个字符 。
=MID(B4,6,4)
提取第6个开始的连续4个字符 。
=LEFT(B5,2)
提取最左边的2个字符 。
Excel字符串中提取数字,5种方法够不够

结构明确,直接提取

固定位置不固定长度

提取数字无外乎解决两个核心问题:
位置,从哪里提?。?
长度,提取几个字符 。
固定位置的情况下,在左边用LEFT,在右边用RIGHT,在中间用MID
长度则需要设法计算,LEN和LENB是常用方法 。
LEN:返回字符串长度,无论中英文还是数字 , 一个字符返回1;
例如公式“=LEN(你好888)“的结果是5 。
LENB:返回字节数,1个汉字是2个字节,返回2;1个字母和数字是1个字节,返回1.
例如公式“=LENB(你好888)“的结果是7 。
以上两个结果的差值,就是字符串中汉字的个数 。
下图所示案例中,通过这样的差值计算就可以确定数字的长度:
=RIGHT(B3,2*LEN(B3)-LENB(B3))
Excel字符串中提取数字,5种方法够不够

LEN,LENB



位置长度都不固定

=MAX(IFERROR(--MID(B3,ROW($1:$99),COLUMN($A:$CU)),""))
MID将字符串拆分得到一个二维数组;
--MID的作用是将该数组中的所有数据转为数字,非数字部分将返回错误值;
IFERROR将错误值转为空值;
整个二维数组中只剩下纯数字和空值两种类型;
MAX求最大值即可 。
Excel字符串中提取数字,5种方法够不够

MID提起
这个公式还有两个要点:
  • 仅针对含1个数字的字符串有效;
  • 按字符数最大99设计,如大于99 , 需修改ROW和COLUMN的参数 。或用OFFSET LEN来确定字符长度:
=MAX(IFERROR(--MID(B3,ROW(OFFSET($A$1,,,LEN(B3))),COLUMN(OFFSET($A$1,,,,LEN(B3)))),""))



固定分隔符

数字的前后有固定分隔符的情况,在M365版本中用TEXTBEFORE,TEXTAFTER,TEXTSPLIT这三个函数可以轻松解决 。
如下图所示案例,提取括号中的数字:
=TEXTBEFORE(TEXTAFTER(B3,"("),")")
Excel字符串中提取数字,5种方法够不够

按指定分隔符提取
其他版本中的思路是用FIND来确定分隔符的位置和长度,MID提取 。
=MID(B3,FIND("(",B3) 1,SUM(FIND({"(",")"},B3)*{-1,1})-1)
Excel字符串中提取数字,5种方法够不够

FIND MID



多数字夹杂

=SUBSTITUTE(CONCAT(MIDB(B3,ROW($1:$99),1))," ","")
借助MIDB按字节拆分的特性,一个汉字将被拆分为两个空格;
拆分后用CONCAT重新组合的新字符串中 , 只有数字和空格两种类型;
SUBSTITUTE将其中的空格全部替换为空即可 。
Excel字符串中提取数字,5种方法够不够

【Excel字符串中提取数字,5种方法够不够】MIDB拆分提取

相关经验推荐