王志軍
同事前來求助,A列的數(shù)據(jù)格式是字母在前、數(shù)字在后的形式,現(xiàn)在需要將數(shù)據(jù)拆分開來,并以加0的形式補(bǔ)足為四位,例如"A01"分拆為A、 01,然后分別補(bǔ)足為OOOA、 0001。除了手工分拆之外,可否利用公式完成呢?
字母列可以利用“=RIGHT("000"&LEFT(A1,MIN(FIN D(ROW($1:$10)一1,A1&1/17))-1),4)”的公式,ROW函數(shù)可以返回一個(gè)引用的行號(hào),F(xiàn)IND函數(shù)可以返回一個(gè)字符串在另一個(gè)字符串出現(xiàn)的起始位置,MIN函數(shù)可以返回一組數(shù)值中的最小值,LEFT函數(shù)是從第一個(gè)字符開始返回指定數(shù)量的字符最后利用RIGHT函數(shù)從右開始返回指定數(shù)字的字符公式輸入之后按下“Ctrl+Shift+Enter”組合鍵轉(zhuǎn)換為數(shù)組公式,向下拖拽或雙擊填充柄,很快就可以看到圖1所示的字母效果;數(shù)字列可以使用“=RIGHT("000”&MID(A1,MIN(FIND(ROW($1.$10)一1,A1&1/17)),99),4)”的數(shù)組公式,公式執(zhí)行之后向下拖拽或雙擊填充柄,很快就可以看到圖2所示的效果。
如果數(shù)據(jù)量比較大,使用數(shù)組公式的效率可能比較低,此時(shí)可以直接使用普通公式,字母列使用“=RIGHT(”0000”&LEFT(A1,LEN(A1)-SUM(ISNUMBER(MID(A1,{1;2;3;4;5;6;7;8},1)+1)+0)),4)”的公式,這里首先使用MID函數(shù)將字符串的字母和數(shù)字逐一提取出來,接下來使用ISNUMBER函數(shù)判斷是否屬于數(shù)值,返回值為TRUE,通過"+0"將TRUE轉(zhuǎn)換為"1",接下來通過LEN函數(shù)計(jì)算字符串的長度,減去數(shù)字的個(gè)數(shù)就是字母的個(gè)數(shù);數(shù)字列使用“=TEXT(RIGHT(A1,SUM(ISNUMBER(MID(A1,{1;2;3;4;5;6;7;8},1)+1)+0)),"0000")”的公式,這里同樣使用MID函數(shù)將字符串的字母和數(shù)字逐一提取出來,接下來使用ISNUMBER函數(shù)判斷是否屬于數(shù)字,返回值為TRUE,通過“+0”將TRUE轉(zhuǎn)換為“1”,接下來計(jì)算數(shù)字的個(gè)數(shù),并提取所有的數(shù)字,最終效果如圖3所示。endprint