Hello,大家好,前幾天跟大家分享了如何提取姓名中的拼音,緊接著就有粉絲在后臺私信提問到如何提取到姓名的首字母,表示自己有幾千個姓名需要提取,都是一個一個的手動輸入,及其耗費時間,今天就跟你大家分享2種提取姓名首字母的方法
一、利用word加函數提取
首先我們創建一個輔助列,輸入公式=A2&" ",我們將每個姓名后面都加上空格,這樣做是為了后期分列使用
然后我們將姓名粘貼進word中在選擇性粘貼中選擇值,緊接著我們選擇這些姓名,將其加上拼音,緊接著我們按快捷鍵ctrl+H調出替換窗口,然后在查找值中輸入^p替換為中什么都不要輸入,然后點擊全部替換,這樣話數據都變為了一行
然后復制加上用拼音的名字,雙擊Excel的一個單元格,注意,必須雙擊,然后按ctrl+v將其粘貼進excel中,緊接著選擇這個單元格,然后點擊分列,分列方式選擇分隔符號,分隔符選擇空格這樣的話我們就將每一個姓名都分割為一個單元格了
然后我們選擇這個數據,復制他,點擊鼠標右鍵找到選擇性粘貼,然后選擇轉置這樣的話我們講就姓名轉換為豎著顯示
緊接著我們輸入公式
=IFERROR(MID( I1,FIND("#",SUBSTITUTE( I1,"(","#",1),1)+1,1),"")&IFERROR(MID( I1,FIND("#",SUBSTITUTE( I1,"(","#",2),1)+1,1),"")&IFERROR(MID( I1,FIND("#",SUBSTITUTE( I1,"(","#",3),1)+1,1),"")&IFERROR(MID( I1,FIND("#",SUBSTITUTE( I1,"(","#",4),1)+1,1),"")
最后我們使用UPPER函數將小寫轉換為大寫字母即可
跟大家講的講解下函數,這個函數看起來很長其實非常的簡單,
如上圖,我們可以看到姓名的結構都是每個字后面是一個括號,然后括號里面是拼音,在這里理論上我們只需要查找到左括號的位置然后加1就是姓名首字母的位置,然后我們利用mid函數提取即可
但是find函數不能查找相同的字符串,它僅僅會返回查找到的第一個字符串的位置,所以我們使用四次SUBSTITUTE分別將1234個左括號替換為#號,我們來查找#號的位置來確定左括號的位置,公式比較長是因為我們使用了4次SUBSTITUTE函數,其實這四個函數僅SUBSTITUTE函數的第四參數不一樣,這樣的話就能分別的查找到左括號的位置提取到精確首字母,如果你懶得寫公式的話,僅需將單元格的位置替換為你的目標位置即可
二、使用vba提取首字母
首先點擊開發工具,然后點擊visualbasic,然后點擊插入選擇模塊,將如下代碼復制進去,然后關閉,緊接著我們輸入=py然后選擇姓名,這樣的話我們也能獲取姓名首字母,在這里我們自定義了一個py函數來實現這樣的操作
代碼如下
Function pinyin(p As String) As String i = Asc(p) Select Case i Case -20319 To -20284: pinyin = "A" Case -20283 To -19776: pinyin = "B" Case -19775 To -19219: pinyin = "C" Case -19218 To -18711: pinyin = "D" Case -18710 To -18527: pinyin = "E" Case -18526 To -18240: pinyin = "F" Case -18239 To -17923: pinyin = "G" Case -17922 To -17418: pinyin = "H" Case -17417 To -16475: pinyin = "J" Case -16474 To -16213: pinyin = "K" Case -16212 To -15641: pinyin = "L" Case -15640 To -15166: pinyin = "M" Case -15165 To -14923: pinyin = "N" Case -14922 To -14915: pinyin = "O" Case -14914 To -14631: pinyin = "P" Case -14630 To -14150: pinyin = "Q" Case -14149 To -14091: pinyin = "R" Case -14090 To -13319: pinyin = "S" Case -13318 To -12839: pinyin = "T" Case -12838 To -12557: pinyin = "W" Case -12556 To -11848: pinyin = "X" Case -11847 To -11056: pinyin = "Y" Case -11055 To -2050: pinyin = "Z" Case Else: pinyin = p End Select End Function Function py(str) For i = 1 To Len(str) py = py & pinyin(Mid(str, i, 1)) Next i End Function
今天的教程有點難,你更喜歡哪一種方法呢
我是excel從零到一,關注我持續分享更多excel技巧