在日常工作中遇到一些獲取文本內(nèi)容拼音首字母的需求,而Excel本身并沒有提供一個很好的處理方法立哑,這時候需要我們自己去編寫一些宏指令去處理這類問題。
注:我們通常使用的Excel默認保存后綴為.xls或.xlsx這樣的致讥,不過這樣的文件中是沒法永久保存我們定義的宏指令憎瘸。這里說一個可以在一個Excel文件中永久保存的宏指令的方法富岳,就是將當前的文件另存為.xlsm為后綴的文件,這個文件是表示Excel是開啟宏的拯腮,可以在內(nèi)部編輯使用宏操作窖式。
1、[打開.xlsm文件]
2动壤、選擇開發(fā)工具->打開Visual Basic編輯器萝喘,如圖
3、點擊運行宏琼懊,會出現(xiàn)如下界面阁簸,如圖
4、輸入宏名稱肩碟,點擊創(chuàng)建
5强窖、出現(xiàn)模塊編輯窗口
6、刪除窗口中的代碼削祈,將以下代碼復(fù)制粘貼進去翅溺,然后保存
' 逐個取ASC碼
Function Getpy(str)
For i = 1 To Len(str)
Getpy = Getpy & getpychar(Mid(str, i, 1))
Next i
End Function
'獲取單個文字的首字母方法
Function getpychar(char)
tmp = 65536 + Asc(char)
If (tmp >= 45217 And tmp <= 45252) Then
getpychar = "A"
ElseIf (tmp >= 45253 And tmp <= 45760) Then
getpychar = "B"
ElseIf (tmp >= 45761 And tmp <= 46317) Then
getpychar = "C"
ElseIf (tmp >= 46318 And tmp <= 46825) Then
getpychar = "D"
ElseIf (tmp >= 46826 And tmp <= 47009) Then
getpychar = "E"
ElseIf (tmp >= 47010 And tmp <= 47296) Then
getpychar = "F"
ElseIf (tmp >= 47297 And tmp <= 47613) Then
getpychar = "G"
ElseIf (tmp >= 47614 And tmp <= 48118) Then
getpychar = "H"
ElseIf (tmp >= 48119 And tmp <= 49061) Then
getpychar = "J"
ElseIf (tmp >= 49062 And tmp <= 49323) Then
getpychar = "K"
ElseIf (tmp >= 49324 And tmp <= 49895) Then
getpychar = "L"
ElseIf (tmp >= 49896 And tmp <= 50370) Then
getpychar = "M"
ElseIf (tmp >= 50371 And tmp <= 50613) Then
getpychar = "N"
ElseIf (tmp >= 50614 And tmp <= 50621) Then
getpychar = "O"
ElseIf (tmp >= 50622 And tmp <= 50905) Then
getpychar = "P"
ElseIf (tmp >= 50906 And tmp <= 51386) Then
getpychar = "Q"
ElseIf (tmp >= 51387 And tmp <= 51445) Then
getpychar = "R"
ElseIf (tmp >= 51446 And tmp <= 52217) Then
getpychar = "S"
ElseIf (tmp >= 52218 And tmp <= 52697) Then
getpychar = "T"
ElseIf (tmp >= 52698 And tmp <= 52979) Then
getpychar = "W"
ElseIf (tmp >= 52980 And tmp <= 53640) Then
getpychar = "X"
ElseIf (tmp >= 53679 And tmp <= 54480) Then
getpychar = "Y"
ElseIf (tmp >= 54481 And tmp <= 62289) Then
getpychar = "Z"
ElseIf (tmp = 53671) Then ' 修復(fù)“學”轉(zhuǎn)義失效問題
getpychar = "X"
Else '不處理非中文文本
getpychar = char
End If
End Function
7、回到表格中髓抑,此時可以在表格中使用我們定義的兩個宏(Getpy, getpychar)
8咙崎、用法吨拍,輸入=Getpy(單元格坐標)褪猛,回車即可
如果遇到無法轉(zhuǎn)義的文本伊滋,可以調(diào)試一下宏代碼,查看一下tmp的值笑旺,然后添加ElseIf判斷即可。