Q28 |
Excel怎麼取出字串中的數字轉換成國字,字串無固定規則 |
||||
示範檔 |
無 |
範例檔 |
Q28.XLSX |
結果檔 |
Q28F.XLSX |
錦子老師您好:
我遇到的問題如下:
1.英文字可能出現在字串任何位置。
2.英文字母沒有固定位置和字元數。
如下舉例:
38D → 三八D
2A2B→ 二A二B
A17B→ A十七B
字元數不超過10個,目前我是列出10個儲存格,分別存放每個字元轉成國字或雙字元,再合併到第11個儲存格,不知道能不能用函數在一個儲存格就完成。
不好意思,這個工程以目前的功力是無法完成的,因為要考慮長度及轉換,只能寫一個VBA程式來解決。
方法1:IF與VLOOKUP函數
1.首先要建立一個對照表,本人是建在N1:O36(0~9與A~Z),如下圖所示。
2.在B2~K2儲存格中依序輸入1~10。
3.點取B2儲存格輸入公式「=IF(B$1>LEN($A2),"",VLOOKUP(MID($A2,B$1,1), $N$1:$O$36,2,0))」後,按Enter鍵。
4.將B2儲存格公式複製到C2~K2儲存格。
5.點取L2儲存格輸入公式「=B2&C2&D2&E2&F2&G2&H2&I2&J2&K2」後,按Enter鍵,結果如下圖所示。
6.將B2~K2儲存格框選起來,再將公式複製到B3~K4儲存格。
方法2:VBA-自訂函數
1.按ALT+F11鍵開啟VBA視窗,如下圖所示。
2.點取「插入 > 模組」指令,新增一個空白模組,如下圖所示。
3.輸入下列VBA程式:
Function NumtoStr(Str As String) As String
For i = 1 To Len(Str)
X = Mid(Str, i, 1)
Select Case True
Case X = 0
y = y & "零"
Case X = 1
y = y & "一"
Case X = 2
y = y & "二"
Case X = 3
y = y & "三"
Case X = 4
y = y & "四"
Case X = 5
y = y & "五"
Case X = 6
y = y & "六"
Case X = 7
y = y & "七"
Case X = 8
y = y & "八"
Case X = 9
y = y & "九"
Case Else
y = y & X
End Select
Next i
NumtoStr = y
End Function
4.點取VBA視窗右上角「X」關閉鈕關閉視窗。
5.點取B5儲存格輸入公式「=NUMTOSTR(A5)」後,按Enter鍵,即可看到完成結果,如下圖所示。
留言列表