利用公式分拆字符串的字母和数字
2018-02-24王志军
王志军
同事前来求助,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