利用VBA宏代碼把Excel單元格中漢字、數(shù)字或字母混合數(shù)據(jù)中的漢字提取出來(lái)
Excel工作表中的"數(shù)據(jù)"菜單下有"分列"命令,便于對(duì)有規(guī)律的數(shù)據(jù)序列進(jìn)行分列,但是對(duì)于一些沒有規(guī)律的數(shù)據(jù)序列則無(wú)法進(jìn)行有效的分割,此時(shí)可以考慮利用Excel中的VBA代碼來(lái)實(shí)現(xiàn)。
在如下圖所示的工作表中,A列保存有漢字、數(shù)字及字母混合在一起的數(shù)據(jù),因?yàn)闈h字的個(gè)數(shù)是隨機(jī)的,無(wú)法使用Excel中分列命令進(jìn)行分列,現(xiàn)在要求將A列中數(shù)據(jù)的漢字部分提取出來(lái)放置到B列中,數(shù)字及字母部分分離出來(lái)放置到C列中,如何操作呢?
第1步 單擊"工具→宏→宏"菜單命令,打開"宏"對(duì)話框。
第2步 在"宏名"文本框中輸入宏的名稱"數(shù)據(jù)分列"。
第3步 單擊"創(chuàng)建"按鈕,在打開的"Visual Basic編輯器"對(duì)話框中輸入所示的代碼。
Sub 數(shù)據(jù)分列()
Dim m%,i%,strn$,rn as range,rng as range
Application.screenupdating=false
M=[a65536].end(xlup).row
Set rng=range(“a1:a” & m)
Columns(“b:c”).clearcontents
For each rn in rng
For I=1 to len(rn)
Strn=mid(rn,I,1)
If isnumeric(strn) then
Rn.offset(0,1)=mid(rn,1,i-1)
Rn.offset(0,2)=mid(rn,i)
Exit for
End if
Next i
Next rn
Application.screenupdating=true
End sub
第4步 關(guān)閉"Visual Basic編輯器"對(duì)話框,在"宏"對(duì)話框中單擊"執(zhí)行"按鈕。
第5步 執(zhí)行后的結(jié)果如下圖所示,即可達(dá)到我們需要的結(jié)果,輕松方便!
提示:
1、代碼經(jīng)多次測(cè)試,結(jié)果完全正確,此處只提供代碼,對(duì)代碼不做分析,有興趣的讀者可以自己研究!
2、本宏代碼只對(duì)漢字+數(shù)字+字母格式才能正確把漢字與其它分割開來(lái),如果數(shù)字在最后面,只能把前面與后面的數(shù)字分割開來(lái),當(dāng)然有興趣的朋友可以自己更改代碼實(shí)現(xiàn)它。
聯(lián)系客服