有如下資料, 需要將英文放到一列, 中文放到另外一列:
序號中英文1blue藍色2white白色3red紅色4green綠色5pink粉紅6pink粉紅red要提取中文或英文, 對於序號1-5, 可以用Excel函數或VBA去達成, 序號6只能用VBA去達成。
VBA代碼如下:
'從包含中英文的文本中提取中文的自訂函數
Function SplitStringChs(TheString)
Dim n, Chs
For n = 1 To Len(TheString)
If Asc(Mid(TheString, n, 1)) < 0 Then
Chs = Chs & Mid(TheString, n, 1)
End If
Next
SplitStringChs = Chs
End Function
'從包含中英文的文本中提取英文的自訂函數
Function SplitStringEng(TheString)
Dim n, Eng
For n = 1 To Len(TheString)
If Asc(Mid(TheString, n, 1)) >= 0 Then
Eng = Eng & Mid(TheString, n, 1)
End If
Next
SplitStringEng = Trim(Eng)
End Function
代碼備註:
VBA 函數Asc(string)相當於Excel中的Code()函數, 但是VBA中沒有定義Code()函數。
Asc(string)返回一個 Integer, 代表字串中首字母的字元代碼。 string 參數可以是任何有效的字串運算式。 如果 string 中沒有包含任何字元, 則會產生執行階段錯誤。 在非 DBCS 系統下, 返回值範圍為 0 – 255 。 在 DBCS 系統下,
mYDATA=ASC("A"), 結果 mYDATA的值 65;
Excel中單元中輸入公式=CODE("A") , 值顯示65;
在儲存格中應用自訂函數或內置函數,
如下:
公式顯示結果為:
中英文用VBA提取英文用VBA提取中文用函數提取英文用函數提取中文blue藍色blue藍色blue藍色white白色white白色white白色red紅色red紅色red紅色green綠色green綠色green綠色pink粉紅pink粉紅pink粉紅pink粉紅redpinkred粉紅pink粉紅red