利用公式分拆字符串的字母和数字

2018-02-24 19:46王志军
电脑知识与技术·经验技巧 2017年6期
关键词:字符串数组字符

王志军

同事前来求助,A列的数据格式是字母在前、数字在后的形式,现在需要将数据拆分开来,并以加0的形式补足为四位,例如"A01"分拆为A、 01,然后分别补足为OOOA、 0001。除了手工分拆之外,可否利用公式完成呢?

字母列可以利用“=RIGHT("000"&LEFT(A1,MIN(FIN D(ROW($1:$10)一1,A1&1/17))-1),4)”的公式,ROW函数可以返回一个引用的行号,FIND函数可以返回一个字符串在另一个字符串出现的起始位置,MIN函数可以返回一组数值中的最小值,LEFT函数是从第一个字符开始返回指定数量的字符最后利用RIGHT函數从右开始返回指定数字的字符公式输入之后按下“Ctrl+Shift+Enter”组合键转换为数组公式,向下拖拽或双击填充柄,很快就可以看到图1所示的字母效果;数字列可以使用“=RIGHT("000”&MID(A1,MIN(FIND(ROW($1.$10)一1,A1&1/17)),99),4)”的数组公式,公式执行之后向下拖拽或双击填充柄,很快就可以看到图2所示的效果。

如果数据量比较大,使用数组公式的效率可能比较低,此时可以直接使用普通公式,字母列使用“=RIGHT(”0000”&LEFT(A1,LEN(A1)-SUM(ISNUMBER(MID(A1,{1;2;3;4;5;6;7;8},1)+1)+0)),4)”的公式,这里首先使用MID函数将字符串的字母和数字逐一提取出来,接下来使用ISNUMBER函数判断是否属于数值,返回值为TRUE,通过"+0"将TRUE转换为"1",接下来通过LEN函数计算字符串的长度,减去数字的个数就是字母的个数;数字列使用“=TEXT(RIGHT(A1,SUM(ISNUMBER(MID(A1,{1;2;3;4;5;6;7;8},1)+1)+0)),"0000")”的公式,这里同样使用MID函数将字符串的字母和数字逐一提取出来,接下来使用ISNUMBER函数判断是否属于数字,返回值为TRUE,通过“+0”将TRUE转换为“1”,接下来计算数字的个数,并提取所有的数字,最终效果如图3所示。endprint

猜你喜欢
字符串数组字符
JAVA稀疏矩阵算法
Python实现图片转字符画
JAVA玩转数学之二维数组排序
正则表达式快速入门
图片轻松变身ASCⅡ艺术画
更高效用好 Excel的数组公式
一种基于PowerBuilder环境字符串相似度算法
SQL server 2008中的常见的字符串处理函数
倍增法之后缀数组解决重复子串的问题
最简单的排序算法(续)