网络营销电子商务研究中心  
How to buy the best prescription safety glasses in Canada? Let's study!
Go Back   网络营销电子商务研究中心 > 电脑运用 > Office
User Name
Password
 
FAQ Members List Calendar Cheap Glasses

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #1   IP: 218.2.66.122
Old 2015-02-04, 01:16 PM
Oak Creek Oak Creek is offline
初级会员
 
Join Date: 2009-01-25
Posts: 1
Oak Creek 现在声名狼藉
Default excel汉字拼音首字母的提取方法和完整代码介绍

关于excel汉字拼音首字母提取的自定义函数,在网上看了一些代码,总有点小遗憾,一些自定义来提取汉字拼音首字母,如果数据源里面有字母或者数字将会被忽略掉。

  下面这个excel汉字拼音首字母提取的自定义函数,相对完美一些,做了容错处理,考虑到了如果是数字或者字母,将会自动显示出来,如果是汉字才进行提取拼音首字母。

excel汉字拼音首字母

  下面是上面所示效果图的提取汉字拼音首字母的VBA代码:


Code:
Option Explicit
Function PY(TT As String) As Variant '自定义函数,目的:把一组汉字变为一组汉字拼音的第一个字母。
Dim i%, temp$
    PY = ""
    For i = 1 To Len(TT)
         temp = Asc(Mid$(TT, i, 1))
         If temp > 255 Or temp < 0 Then   '是汉字吗?
             PY = PY & pinyin(Mid$(TT, i, 1)) '转化为拼音首字母,
         Else
             PY = PY & LCase(Mid$(TT, i, 1))  '转化英文字母
         End If
    Next i
End Function
Function pinyin(myStr As String) As Variant '自定义函数,目的:把单个汉字变为拼音的第一个字母。
    On Error Resume Next
    myStr = StrConv(myStr, vbNarrow)
    If Asc(myStr) > 0 Or Err.Number = 1004 Then pinyin = ""
    pinyin = Application.WorksheetFunction.VLookup(myStr, [{"吖","A";"八","B";"嚓","C";"咑","D";"鵽","E";"发","F";"猤","G";"铪","H";"夻","J";"咔","K";"垃","L";"嘸","M";"旀","N";"噢","O";"妑","P";"七","Q";"囕","R";"仨","S";"他","T";"屲","W";"夕","X";"丫","Y";"帀","Z"}], 2)
End Function
注意:代码中的 1004指执行的单元格行数, 如单元格很多行, 可修改这个数字 .

使用方法是:打开excel文档,按下ALT+F11,打开VBE编辑器,然后插入——模块,复制上面的代码,关闭VBE。回到工作表中,输入公式,比如:=py(A2),就可以提取A2单元格汉字拼音首字母。

Last edited by Oak Creek : 2015-02-04 at 01:25 PM
Reply With Quote
 


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Prescription-glasses.com offers prescription glasses online at discount prices.
All times are GMT +8. The time now is 10:46 AM.


Powered by vBulletin Version 3.8.7
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.