对联 ·故事 ·史海钩沉 ·人物档案 ·地方风俗 ·谚语大全 ·讽刺与幽默 · 赚钱 · 法律 · 在线教研 · 会员中心 · 心理测试 · 魔鬼词典 · 顺口溜
 
主页特效 网页特效 百家姓
娱乐 歇后语 绕口令 脑筋急转弯
 
谚语 谜语 名言 邮政编码
便民 酒方 验方 偏方 站长工具  
 
算命 风俗 手相 爱情
女孩 音乐 面相 星座 血型
 
饮食 穴道 偏方 医药
生活 软件 硬件 解梦 高考



   JS特效



实用工具
便民服务 加密解密
 
魅力高密 民间故事 Flash教程 PS教程 最新国内新闻
新华字典 黄道吉日 英语园地  万年历 Html2anycode
  首页 | 美图 | 短信 | 安全 | 校园 | 网站 | 游戏 | UFO | 文秘 | 生活 | 信息技术 | 论文 | 人生 | 情感 | 日记
返回首页
当前位置: 主页 > 软硬兼施 > 软件资讯 >

excel汉字转拼音(首字母)最完美无误差方法(3)

时间:2014-05-27 11:21来源:panpan.org 作者:杜风铃 点击:
Db = Split(PYDB(0), ,) ReDim PY_Index(UBound(Db)) For i = 1 To UBound(Db) PY_Index(i) = Db(i - 1) Next i For i = 1 To 72 Db = Split(PYDB(i), ,) For j = 1 To UBound(Db) PY_DB(i, j) = Db(j - 1) Next j N
  
Db = Split(PYDB(0), ",")


ReDim PY_Index(UBound(Db))

For i = 1 To UBound(Db)

    PY_Index(i) = Db(i - 1)

Next i

For i = 1 To 72

    Db = Split(PYDB(i), ",")
   
    For j = 1 To UBound(Db)
    PY_DB(i, j) = Db(j - 1)
    Next j
   
Next i

End Sub


Public Function PinYin(TXT As Variant, Delimiter As String, Tpy As Byte) As String

    Dim N As Integer
    Dim ASCID As Long
    Dim Y As Byte
    Dim M_Txt As String
    Dim M_PY As String
    Dim MI_PY As String
    Application.Volatile
    On Error Resume Next
   
    If PY_DB(72, 94) <> "ā/á/ǎ/à" And Tpy = 5 Then
        Call DealVal_2
    ElseIf PY_DB(72, 94) <> "a1" And Tpy < 5 Then
        Call DealVal_1
    End If
   
    If TXT = "" Then
    PinYin = ""
    Exit Function
    End If
   
    For i = 1 To Len(Trim(TXT))
   
    M_Txt = Mid(Trim(TXT), i, 1)
   
        If M_Txt = "" Then
       
            MI_PY = ""
           
        Else
            ASCID = Asc(M_Txt)
       
            For N = 1 To UBound(PY_Index)
            If PY_Index(N) < ASCID Then
            Exit For
            End If
            Next N
       
            PYDB_Index = PY_Index(N - 1) - ASCID
       
            If PYDB_Index < 0 Or PYDB_Index > 93 Then
            M_PY = M_Txt
            Y = 1
            Else
            M_PY = PY_DB(N - 1, PYDB_Index + 1)
            End If
           
        End If
   
        Select Case Tpy
       
            Case 1
            MI_PY = M_PY
            Case 2
            MI_PY = IIf(M_PY = M_Txt, M_PY, Mid(M_PY, 1, Len(M_PY) - 1))
            Case 3
            MI_PY = Left(M_PY, 1)
            Case 4
            MI_PY = UCase(Left(M_PY, 1))
            Case 5
            MI_PY = M_PY
          
        End Select
    
        PinYin = PinYin & IIf(M_PY = M_Txt, MI_PY, IIf(Y = 1, Delimiter & MI_PY & Delimiter, IIf(i = Len(Trim(TXT)), MI_PY, MI_PY & Delimiter)))
           
        Y = IIf(Y = 1, IIf(M_PY = M_Txt, 1, 0), 0)
   
    Next i

End Function

Public Function PY(TXT As Variant, Delimiter As String) As String
Application.Volatile
  For Each p In Split(TXT, Delimiter)
    PY = PY & UCase(Left(p, 1))
  Next
End Function


本帖参考内容:
http://club.excelhome.net/forum.php?mod=viewthread&tid=736514&page=1#pid4999766

顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
赞助商位置
推荐内容
杂七杂八