乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > <em>excel</em> 如何把“汉字”转换为“拼音首字母”?-excel 中文拼音首字母,

<em>excel</em> 如何把“汉字”转换为“拼音首字母”?-excel 中文拼音首字母,

作者:乔山办公网日期:

返回目录:excel表格制作


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"})
回车。

1.启动Excel,打开相应的工作表。
2.执行“工具→宏→Visual Basic编辑器”命令(或者直接按“Alt+F11”组合键),进入Visual Basic编辑状e799bee5baa6e59b9ee7ad94330态。
3.执行“插入→模块”命令,插入一个新模块。再双击插入的模块,进入模块代码编辑状态。
4.将代码输入其中。代码如下:
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 >= 53679 And tmp <= 54480) Then

getpychar = "Y"

ElseIf (tmp >= 54481 And tmp <= 62289) Then

getpychar = "Z"

Else '如果不是中文,则不处理

getpychar = char

End If

End Function

'逐个取ASC码

Function getpy(str)

For i = 1 To Len(str)

getpy = getpy & getpychar(Mid(str, i, 1))

Next i

End Function
5.代码输入完成后,关闭Visual Basic编辑窗口,返回Excel编辑状态。
6.自定义函数就可以用了。如:选中A2单元格,输入公式:=getpy(A2)。
步骤一:将下述常量数组定义为名称,如PY,下面就是包括26个字母及其第一个汉字: ={"","";"吖","A";"八","B";"嚓","C";"咑","D";"鵽","E";"发","F";"猤","G";"铪","H";" 夻","J";"咔","K";"垃","L";"呒","M";"旀","N";"噢","O";"妑","P";"七","Q";"囕","R";" 仨","S";"他","T";"屲","W";"夕","X";"丫","Y";"帀","Z"}
复制公式或代码步骤二:使用LOOKUP(汉字,PY)或者VLOOKUP(汉字,PY,2)就可以返回指定汉字的拼音首字母:
(注意:使用VLOOKUP()函数时,其最后一个参数须用1或True的模糊“默认”查找方式)

如下,LOOKUP()的个数可根据汉字的个数决定,由于上面定义的PY最前面有一个""的值,所以可以屏蔽错误,当然也可以用迭代计算的方式获得: =LOOKUP(LEFT(A2),PY)&LOOKUP(

  根据GB2312-1980 信息交换用汉字编码字符集 汉字分为一级汉e5a48de588b6e799bee5baa6338字(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(单元格名)即可,如下图所示,函数的局限性也在图中进行了演示。

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网