如何应用Excel函数把汉字换成拼音首字母

 我来答
sun_visual
2015-12-24 · TA获得超过682个赞
知道小有建树答主
回答量:718
采纳率:66%
帮助的人:420万
展开全部

  根据GB2312-1980 信息交换用汉字编码字符集 汉字分为一级汉字(3755个)和二级汉字(3008)个,一级汉字使用拼音排序,二级汉字使用笔画排序。因此对于一级汉字比较好办,找到每个拼音开始和结束的汉字内码即可。

  对于二级汉字还没有好的办法,不过一级汉字3755个基本上已经够用了。目前网上的方法都是针对一级汉字的。

  以下使用VBA制作一个自定义函数:getpy在表格中直接使用这个函数即可。

Function getpychar(char)
tmp = 65536 + Asc(char)
If (tmp >= 45217 And tmp <= 45252) Then
    getpychar = "A"
ElseIf (tmp >= 45253 And tmp <= 45760) Then
    getpychar = "B"
ElseIf (tmp >= 45761 And tmp <= 46317) Then
    getpychar = "C"
ElseIf (tmp >= 46318 And tmp <= 46825) Then
    getpychar = "D"
ElseIf (tmp >= 46826 And tmp <= 47009) Then
    getpychar = "E"
ElseIf (tmp >= 47010 And tmp <= 47296) Then
    getpychar = "F"
ElseIf (tmp >= 47297 And tmp <= 47613) Then
    getpychar = "G"
ElseIf (tmp >= 47614 And tmp <= 48118) Then
    getpychar = "H"
ElseIf (tmp >= 48119 And tmp <= 49061) Then
    getpychar = "J"
ElseIf (tmp >= 49062 And tmp <= 49323) Then
    getpychar = "K"
ElseIf (tmp >= 49324 And tmp <= 49895) Then
    getpychar = "L"
ElseIf (tmp >= 49896 And tmp <= 50370) Then
    getpychar = "M"
ElseIf (tmp >= 50371 And tmp <= 50613) Then
    getpychar = "N"
ElseIf (tmp >= 50614 And tmp <= 50621) Then
    getpychar = "O"
ElseIf (tmp >= 50622 And tmp <= 50905) Then
    getpychar = "P"
ElseIf (tmp >= 50906 And tmp <= 51386) Then
    getpychar = "Q"
ElseIf (tmp >= 51387 And tmp <= 51445) Then
    getpychar = "R"
ElseIf (tmp >= 51446 And tmp <= 52217) Then
    getpychar = "S"
ElseIf (tmp >= 52218 And tmp <= 52697) Then
    getpychar = "T"
ElseIf (tmp >= 52698 And tmp <= 52979) Then
    getpychar = "W"
ElseIf (tmp >= 52980 And tmp <= 53640) Then
    getpychar = "X"
ElseIf (tmp >= 53689 And tmp <= 54480) Then
    getpychar = "Y"
ElseIf (tmp >= 54481 And tmp <= 62289) Then
    getpychar = "Z"
Else '如果不是中文,则不处理
    getpychar = char
End If
End Function

Function getpy(str)
For i = 1 To Len(str)
    getpy = getpy & getpychar(Mid(str, i, 1))
Next i
End Function

  应用举例:在单元格中输入公式=getpy(单元格名)即可,如下图所示,函数的局限性也在图中进行了演示。

benawsa2011
2010-09-20 · 超过16用户采纳过TA的回答
知道答主
回答量:67
采纳率:0%
帮助的人:27.6万
展开全部
如A1-A50输入的是汉字。则在B1中的公式为:=LOOKUP(CODE(A1),45217+{0,36,544,1101,1609,1793,2080,2560,2902,3845,4107,4679,5154,5397,5405,5689,6170,6229,7001,7481,7763,8472,9264},{"A","B","C","D","E","F","G","H","J","K","L","M","N","O","P","Q","R","S","T","W","X","Y","Z"})
B2-B50填充。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
HuaGeG
2010-09-20 · TA获得超过7706个赞
知道大有可为答主
回答量:8038
采纳率:26%
帮助的人:2141万
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式