ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > VBA中如何自定义取得汉字拼音的第一个字母函数?

VBA中如何自定义取得汉字拼音的第一个字母函数?

作者:绿色风 分类: 时间:2022-08-17 浏览:260
楼主
gvntw
提取拼音首字母的自定义函数,如“大海航行靠舵手”提取“DHHXKDS”。
  1. Option Explicit
  2. Function PY(myStr As String) As String
  3.     Dim LenInt As Integer, i As Integer
  4.     Dim Temp As String, oStr As String
  5.     On Error Resume Next
  6.    
  7.    myStr = StrConv(myStr, vbNarrow)
  8.     LenInt = Len(myStr)
  9.    
  10.    For i = 1 To LenInt
  11.       If Asc(Mid(myStr, i, 1)) > 0 Or Err.Number = 1004 Then oStr = ""
  12.       oStr = Application.WorksheetFunction.Lookup(Mid(myStr, i, 1), _
  13.       
    拼音首字母.zip
2楼
apolloh
发哥万岁!FGWS呵呵!
3楼
罗刚君
简化一下:
Function PY(myStr As String) As String
    Dim i As Integer
   For i = 1 To Len(myStr)
      If Mid(myStr, i, 1) Like "[一-龥]" Then PY = PY & Application.WorksheetFunction.Lookup(Mid(myStr, 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"}])
   Next i
End Function
4楼
gvntw
谢谢罗兄简化!
输入靔靝埊肏也能求出。
另:请问所有汉字都包含“在一-龥”间吗?
5楼
水星钓鱼
”“这个看看能不能出来?呵呵
6楼
superzyp
高人你好
为什么我第一次测试可以

第二次就无法输出了,输出显示:#NAME?

是哪里出了问题,请指教,谢谢
7楼
BIN_YANG168
这里的比较全面:
http://www.exceltip.net/thread-1861-1-3.html
8楼
tongliaozyr
越学习,越发现自已的无知!
9楼
wise
Q:VBA中如何自定义取得汉字拼音的第一个字母函数?
A:翻了一下以前的学习资料,找出这样一个收藏的一个帖子,发上来。觉得这个帖子的代码不错。这个自定义函数不错。
  1. Public Function GetPinY(myChar As String) As String
  2.     Dim i As Long
  3.     i = Asc(myChar)
  4.     If i >= Asc("啊") And i < Asc("芭") Then
  5.         GetPinY = "A"
  6.     ElseIf i >= Asc("芭") And i < Asc("擦") Then
  7.         GetPinY = "B"
  8.     ElseIf i >= Asc("擦") And i < Asc("搭") Then
  9.         GetPinY = "C"
  10.     ElseIf i >= Asc("搭") And i < Asc("蛾") Then
  11.         GetPinY = "D"
  12.     ElseIf i >= Asc("蛾") And i < Asc("发") Then
  13.         GetPinY = "E"
  14.     ElseIf i >= Asc("发") And i < Asc("噶") Then
  15.         GetPinY = "F"
  16.     ElseIf i >= Asc("噶") And i < Asc("哈") Then
  17.         GetPinY = "G"
  18.     ElseIf i >= Asc("哈") And i < Asc("击") Then
  19.         GetPinY = "H"
  20.     ElseIf i >= Asc("击") And i < Asc("喀") Then
  21.         GetPinY = "J"
  22.     ElseIf i >= Asc("喀") And i < Asc("垃") Then
  23.         GetPinY = "K"
  24.     ElseIf i >= Asc("垃") And i < Asc("妈") Then
  25.         GetPinY = "L"
  26.     ElseIf i >= Asc("妈") And i < Asc("拿") Then
  27.         GetPinY = "M"
  28.     ElseIf i >= Asc("拿") And i < Asc("哦") Then
  29.         GetPinY = "N"
  30.     ElseIf i >= Asc("哦") And i < Asc("啪") Then
  31.         GetPinY = "O"
  32.     ElseIf i >= Asc("啪") And i < Asc("欺") Then
  33.         GetPinY = "P"
  34.     ElseIf i >= Asc("欺") And i < Asc("然") Then
  35.         GetPinY = "Q"
  36.     ElseIf i >= Asc("然") And i < Asc("撒") Then
  37.         GetPinY = "R"
  38.     ElseIf i >= Asc("撒") And i < Asc("塌") Then
  39.         GetPinY = "S"
  40.     ElseIf i >= Asc("塌") And i < Asc("挖") Then
  41.         GetPinY = "T"
  42.     ElseIf i >= Asc("挖") And i < Asc("昔") Then
  43.         GetPinY = "W"
  44.     ElseIf i >= Asc("昔") And i < Asc("压") Then
  45.         GetPinY = "X"
  46.     ElseIf i >= Asc("压") And i < Asc("匝") Then
  47.         GetPinY = "Y"
  48.     ElseIf i >= Asc("匝") And i <= Asc("座") Then
  49.         GetPinY = "Z"
  50.     End If
  51. End Function
10楼
gvntw
提取汉字拼音首字母,我以前发过一帖了:
http://www.exceltip.net/thread-1215-1-1.html
11楼
dtxczjzmp
收下,谢谢多位高手分享!
12楼
逍遥自在

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap