資源描述:
《excel:漢字拼音首字母提取》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、方法一:VBA自定義函數(shù)"=hztopy()"下面是一個VBA自定義函數(shù),工具->宏->VisualBasic編輯器->,插入模塊,在VBA編輯器里面->插入->模塊->貼入下述代碼,(按ALT+F11,插入模塊,在右面窗口中粘貼下面代碼)那么,比如在A3中有"進退兩難",則在B3中輸入"=hztopy(A3)",則會得到"JTLN"。不過此法有時候也會出錯,比如"皓、鑫、婷、雯、奕"等,就無法提取漢字拼音首字母。Functionhztopy(hzpyAsString)AsStringDimhzst
2、ringAsString,pystringAsStringDimhzpysumAsInteger,hziAsInteger,hzpyhexAsIntegerhzstring=Trim(hzpy)hzpysum=Len(Trim(hzstring))pystring=""Forhzi=1Tohzpysumhzpyhex="&H"+Hex(Asc(Mid(hzstring,hzi,1)))SelectCasehzpyhexCase&HB0A1To&HB0C4:pystring=pystring+"A"C
3、ase&HB0C5To&HB2C0:pystring=pystring+"B"Case&HB2C1To&HB4ED:pystring=pystring+"C"Case&HB4EETo&HB6E9:pystring=pystring+"D"Case&HB6EATo&HB7A1:pystring=pystring+"E"Case&HB7A2To&HB8C0:pystring=pystring+"F"Case&HB8C1To&HB9FD:pystring=pystring+"G"Case&HB9FETo&
4、HBBF6:pystring=pystring+"H"Case&HBBF7To&HBFA5:pystring=pystring+"J"Case&HBFA6To&HC0AB:pystring=pystring+"K"Case&HC0ACTo&HC2E7:pystring=pystring+"L"Case&HC2E8To&HC4C2:pystring=pystring+"M"Case&HC4C3To&HC5B5:pystring=pystring+"N"Case&HC5B6To&HC5BD:pystri
5、ng=pystring+"O"Case&HC5BETo&HC6D9:pystring=pystring+"P"Case&HC6DATo&HC8BA:pystring=pystring+"Q"Case&HC8BBTo&HC8F5:pystring=pystring+"R"Case&HC8F6To&HCBF9:pystring=pystring+"S"Case&HCBFATo&HCDD9:pystring=pystring+"T"Case&HEDC5:pystring=pystring+"T"Case&
6、HCDDATo&HCEF3:pystring=pystring+"W"Case&HCEF4To&HD1B8:pystring=pystring+"X"Case&HD1B9To&HD4D0:pystring=pystring+"Y"Case&HD4D1To&HD7F9:pystring=pystring+"Z"CaseElsepystring=pystring+Mid(hzstring,hzi,1)EndSelectNexthztopy=pystringEndFunction方法二:VBA自定義函數(shù)"
7、=getpy()"下面是一個VBA自定義函數(shù),工具->宏->VisualBasic編輯器->,插入模塊,在VBA編輯器里面->插入->模塊->貼入上述代碼,那么。那么,比如在A2中有"進退兩難",則在B2中輸入"=getpy(A2)",則會得到"JTLN"。不過此法有時候也會出錯,比如"鑫、雯、奕"等,就無法提取漢字拼音首字母,還有些字如"皓、婷"等被錯提取為“Z”。Functiongetpychar(char)tmp=65536+Asc(char)If(tmp>=45217Andtmp<=4525
8、2)Thengetpychar="A"ElseIf(tmp>=45253Andtmp<=45760)Thengetpychar="B"ElseIf(tmp>=45761Andtmp<=46317)Thengetpychar="C"ElseIf(tmp>=46318Andtmp<=46825)Thengetpychar="D"ElseIf(tmp>=46826Andtmp<=47009)Thengetpychar="E"ElseIf(tmp>=47010Andtmp<=