关于excel汉字拼音首字母提取的自定义函数,在网上看了一些代码,总有点小遗憾,一些自定义来提取汉字拼音首字母,如果数据源里面有字母或者数字将会被忽略掉。
下面这个excel汉字拼音首字母提取的自定义函数,相对完美一些,做了容错处理,考虑到了如果是数字或者字母,将会自动显示出来,如果是汉字才进行提取拼音首字母。
下面是上面所示效果图的提取汉字拼音首字母的VBA代码:
OptionExplicit
FunctionPY(TTAsString)AsVariant'自定义函数,目的:把一组汉字变为一组汉字拼音的第一个字母。
Dimi%,temp$
PY=""
Fori=1ToLen(TT)
temp=Asc(Mid$(TT,i,1))
Iftemp>255Ortemp<0Then '是汉字吗?
PY=PY&pinyin(Mid$(TT,i,1))'转化为拼音首字母,
Else
PY=PY&LCase(Mid$(TT,i,1)) '转化英文字母
EndIf
Nexti
EndFunction
Functionpinyin(myStrAsString)AsVariant'自定义函数,目的:把单个汉字变为拼音的第一个字母。
OnErrorResumeNext
myStr=StrConv(myStr,vbNarrow)
IfAsc(myStr)>0OrErr.Number=1004Thenpinyin=""
pinyin=Application.WorksheetFunction.VLookup(myStr,[{"吖","A";"八","B";"嚓","C";"?,"D";"z","E";"发","F";" g","G";"铪","H";"","J";"咔","K";"垃","L";"`","M";"?,"N";"噢","O";"r","P";"七","Q";"?,"R";"仨","S";"他","T";"?,"W";"夕","X";"丫","Y";"","Z"}],2)
EndFunction
使用方法是:打开excel文档,按下ALT+F11,打开VBE编辑器,然后插入――模块,复制上面的代码,关闭VBE。回到工作表中,输入公式,比如:=py(A2),就可以提取A2单元格汉字拼音首字母。





