加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

将中文转换为拼音首字母的VBA程序

(2010-09-19 16:49:00)
标签:

中文

拼音

首字母

vba

程序

分类: EXCEL真奇妙

感觉这个是最好的将中文转换为拼音首字母的程序

Function pinyin(hanzi As Range) As String
    Dim i%
    Dim tmp$
    For i = 1 To Len(hanzi)
        If Asc(Mid(hanzi, i, 1)) <= 126 And Asc(Mid(hanzi, i, 1)) >= 33 Then  ' 126为"~"   33为"!"
            tmp = Mid(hanzi, i, 1)
        Else
            tmp = Application.WorksheetFunction.VLookup(Mid(hanzi, i, 1), [{"吖","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 If
        pinyin = pinyin + tmp
    Next i
End Function

 

2013-7-4-10-57博主按:

    不知因为什么,上面这个程序使得一些字不正确,反思一下,考虑有可能是因为操作系统由XP换成WIN7的原因,此原因还有待验证。

    后来又找了个程序,但是还是有些字转换得不对,发现貌似是些生僻字,可能不是国标的字,所以,进行了修改,在下面加了穷举转换不正确的字,包括“解”这样的多音字。如此这番折腾,终于可以了。以后有识别不正确的字,可以在后面加上穷举就可以了。

 

Function vicpy(hanzi)
    Dim i%
    Dim tmp As Long
    Dim char$, getpychar$, OK$
    For i = 1 To Len(hanzi)
        char = Mid(hanzi, i, 1)
        tmp = 65536 + Asc(char)
        If (tmp >= 45217 And tmp <= 45252) Then getpychar = "A"
        If (tmp >= 45253 And tmp <= 45760) Then getpychar = "B"
        If (tmp >= 45761 And tmp <= 46317) Then getpychar = "C"
        If (tmp >= 46318 And tmp <= 46825) Then getpychar = "D"
        If (tmp >= 46826 And tmp <= 47009) Then getpychar = "E"
        If (tmp >= 47010 And tmp <= 47296) Then getpychar = "F"
        If (tmp >= 47297 And tmp <= 47613) Then getpychar = "G"
        If (tmp >= 47614 And tmp <= 48118) Then getpychar = "H"
        If (tmp >= 48119 And tmp <= 49061) Then getpychar = "J"
        If (tmp >= 49062 And tmp <= 49323) Then getpychar = "K"
        If (tmp >= 49324 And tmp <= 49895) Then getpychar = "L"
        If (tmp >= 49896 And tmp <= 50370) Then getpychar = "M"
        If (tmp >= 50371 And tmp <= 50613) Then getpychar = "N"
        If (tmp >= 50614 And tmp <= 50621) Then getpychar = "O"
        If (tmp >= 50622 And tmp <= 50905) Then getpychar = "P"
        If (tmp >= 50906 And tmp <= 51386) Then getpychar = "Q"
        If (tmp >= 51387 And tmp <= 51445) Then getpychar = "R"
        If (tmp >= 51446 And tmp <= 52217) Then getpychar = "S"
        If (tmp >= 52218 And tmp <= 52697) Then getpychar = "T"
        If (tmp >= 52698 And tmp <= 52979) Then getpychar = "W"
        If (tmp >= 52980 And tmp <= 53688) Then getpychar = "X"
        If (tmp >= 53689 And tmp <= 54480) Then getpychar = "Y"
        If (tmp >= 54481 And tmp <= 62289) Then getpychar = "Z"
        If char = "泓" Then getpychar = "H"
        If char = "翟" Then getpychar = "Z"
        If char = "闫" Then getpychar = "Y"
        If char = "钰" Then getpychar = "Y"
        If char = "佘" Then getpychar = "S"
        If char = "晖" Then getpychar = "H"
        If char = "葭" Then getpychar = "J"
        If char = "芸" Then getpychar = "Y"
        If char = "窦" Then getpychar = "D"
        If char = "岐" Then getpychar = "Q"
        If char = "喆" Then getpychar = "Z"
        If char = "薇" Then getpychar = "W"
        If char = "茜" Then getpychar = "Q"
        If char = "娅" Then getpychar = "Y"
        If char = "笃" Then getpychar = "D"
        If char = "瑜" Then getpychar = "Y"
        If char = "皓" Then getpychar = "H"
        If char = "蔺" Then getpychar = "L"
        If char = "缑" Then getpychar = "G"
        If char = "芙" Then getpychar = "F"
        If char = "邸" Then getpychar = "D"
        If char = "解" Then getpychar = "X"
        If char = "璘" Then getpychar = "L"
        If char = "媛" Then getpychar = "Y"
        If char = "婷" Then getpychar = "T"
        If char = "璟" Then getpychar = "J"
        If char = "昱" Then getpychar = "Y"
        If char = "楠" Then getpychar = "N"
        If char = "婕" Then getpychar = "J"
        If char = "岚" Then getpychar = "L"
        If char = "桦" Then getpychar = "H"
        If char = "鑫" Then getpychar = "X"
        If char = "韬" Then getpychar = "T"
        If char = "倩" Then getpychar = "Q"
        If char = "瑾" Then getpychar = "J"
        If char = "(" Then getpychar = "("
        If char = ")" Then getpychar = ")"
        OK = OK + getpychar
    Next i
    vicpy = OK
End Function

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有