在Excel表中实现取汉字首字母的功能

使用方法:

     工具-宏-visual basic编辑器,新建一个模块,然后将下列代码复印到模块中。然后,就可以把 pinyin(mystring)当一个工作薄函数来使用了。

例子:
在a1单元格中有文字 【阿中】
在b1单元格中输入函数  =pinyin(a1)  b1中则输出 【AZ】

代码:

  
  
  
  
  1. Public Function pinyin(mystr As StringAs Variant '自定义函数,目的:把单个汉字变为拼音的第一个字母。  
  2.     On Error Resume Next 
  3.     mystr = StrConv(mystr, vbNarrow)  
  4.       
  5.     Dim returnStr As String 
  6.       
  7.     Dim i As Integer 
  8.     Dim curWord As String 
  9.     For i = 1 To Len(mystr)  
  10.             
  11.           curWord = Mid(mystr, i, 1)  
  12.               
  13.           If Asc(curWord) <> 0 And Err.Number <> 1004 Then 
  14.             returnStr = returnStr & getFirstLetterOfCnWord(curWord)  
  15.           End If 
  16.     Next i  
  17.       
  18.     pinyin = returnStr  
  19.      
  20.        
  21. End Function 
  22.    
  23.  Public Function isCNWord(mystr As StringAs Boolean 
  24.     Dim flag As Boolean 
  25.     flag = False 
  26.     If Len(mystr) <> LenB(mystr) Then 
  27.         flag = True 
  28.     End If 
  29.     isCNWord = flag  
  30.  End Function 
  31.  
  32.  
  33.  
  34. Public Function getFirstLetterOfCnWord(mystr As StringAs String 
  35.     If Asc(mystr) < 0 Then 
  36.         If Asc(Left$(mystr, 1)) < Asc("啊"Then 
  37.             getFirstLetterOfCnWord = "0" 
  38.             Exit Function 
  39.         End If 
  40.         If Asc(Left$(mystr, 1)) >= Asc("啊"And Asc(Left$(mystr, 1)) < Asc("芭"Then 
  41.             getFirstLetterOfCnWord = "A" 
  42.             Exit Function 
  43.         End If 
  44.         If Asc(Left$(mystr, 1)) >= Asc("芭"And Asc(Left$(mystr, 1)) < Asc("擦"Then 
  45.             getFirstLetterOfCnWord = "B" 
  46.             Exit Function 
  47.         End If 
  48.         If Asc(Left$(mystr, 1)) >= Asc("擦"And Asc(Left$(mystr, 1)) < Asc("搭"Then 
  49.             getFirstLetterOfCnWord = "C" 
  50.             Exit Function 
  51.         End If 
  52.         If Asc(Left$(mystr, 1)) >= Asc("搭"And Asc(Left$(mystr, 1)) < Asc("蛾"Then 
  53.             getFirstLetterOfCnWord = "D" 
  54.             Exit Function 
  55.         End If 
  56.         If Asc(Left$(mystr, 1)) >= Asc("蛾"And Asc(Left$(mystr, 1)) < Asc("发"Then 
  57.             getFirstLetterOfCnWord = "E" 
  58.             Exit Function 
  59.         End If 
  60.         If Asc(Left$(mystr, 1)) >= Asc("发"And Asc(Left$(mystr, 1)) < Asc("噶"Then 
  61.             getFirstLetterOfCnWord = "F" 
  62.             Exit Function 
  63.         End If 
  64.         If Asc(Left$(mystr, 1)) >= Asc("噶"And Asc(Left$(mystr, 1)) < Asc("哈"Then 
  65.             getFirstLetterOfCnWord = "G" 
  66.             Exit Function 
  67.         End If 
  68.         If Asc(Left$(mystr, 1)) >= Asc("哈"And Asc(Left$(mystr, 1)) < Asc("击"Then 
  69.             getFirstLetterOfCnWord = "H" 
  70.             Exit Function 
  71.         End If 
  72.         If Asc(Left$(mystr, 1)) >= Asc("击"And Asc(Left$(mystr, 1)) < Asc("喀"Then 
  73.             getFirstLetterOfCnWord = "J" 
  74.             Exit Function 
  75.         End If 
  76.         If Asc(Left$(mystr, 1)) >= Asc("喀"And Asc(Left$(mystr, 1)) < Asc("垃"Then 
  77.             getFirstLetterOfCnWord = "K" 
  78.             Exit Function 
  79.         End If 
  80.         If Asc(Left$(mystr, 1)) >= Asc("垃"And Asc(Left$(mystr, 1)) < Asc("妈"Then 
  81.             getFirstLetterOfCnWord = "L" 
  82.             Exit Function 
  83.         End If 
  84.         If Asc(Left$(mystr, 1)) >= Asc("妈"And Asc(Left$(mystr, 1)) < Asc("拿"Then 
  85.             getFirstLetterOfCnWord = "M" 
  86.             Exit Function 
  87.         End If 
  88.         If Asc(Left$(mystr, 1)) >= Asc("拿"And Asc(Left$(mystr, 1)) < Asc("哦"Then 
  89.             getFirstLetterOfCnWord = "N" 
  90.             Exit Function 
  91.         End If 
  92.         If Asc(Left$(mystr, 1)) >= Asc("哦"And Asc(Left$(mystr, 1)) < Asc("啪"Then 
  93.             getFirstLetterOfCnWord = "O" 
  94.             Exit Function 
  95.         End If 
  96.         If Asc(Left$(mystr, 1)) >= Asc("啪"And Asc(Left$(mystr, 1)) < Asc("期"Then 
  97.             getFirstLetterOfCnWord = "P" 
  98.             Exit Function 
  99.         End If 
  100.         If Asc(Left$(mystr, 1)) >= Asc("期"And Asc(Left$(mystr, 1)) < Asc("然"Then 
  101.             getFirstLetterOfCnWord = "Q" 
  102.             Exit Function 
  103.         End If 
  104.         If Asc(Left$(mystr, 1)) >= Asc("然"And Asc(Left$(mystr, 1)) < Asc("撒"Then 
  105.             getFirstLetterOfCnWord = "R" 
  106.             Exit Function 
  107.         End If 
  108.         If Asc(Left$(mystr, 1)) >= Asc("撒"And Asc(Left$(mystr, 1)) < Asc("塌"Then 
  109.             getFirstLetterOfCnWord = "S" 
  110.             Exit Function 
  111.         End If 
  112.         If Asc(Left$(mystr, 1)) >= Asc("塌"And Asc(Left$(mystr, 1)) < Asc("挖"Then 
  113.             getFirstLetterOfCnWord = "T" 
  114.             Exit Function 
  115.         End If 
  116.         If Asc(Left$(mystr, 1)) >= Asc("挖"And Asc(Left$(mystr, 1)) < Asc("昔"Then 
  117.             getFirstLetterOfCnWord = "W" 
  118.             Exit Function 
  119.         End If 
  120.         If Asc(Left$(mystr, 1)) >= Asc("昔"And Asc(Left$(mystr, 1)) < Asc("压"Then 
  121.             getFirstLetterOfCnWord = "X" 
  122.             Exit Function 
  123.         End If 
  124.         If Asc(Left$(mystr, 1)) >= Asc("压"And Asc(Left$(mystr, 1)) < Asc("匝"Then 
  125.             getFirstLetterOfCnWord = "Y" 
  126.             Exit Function 
  127.         End If 
  128.         If Asc(Left$(mystr, 1)) >= Asc("匝"Then 
  129.             getFirstLetterOfCnWord = "Z" 
  130.             Exit Function 
  131.         End If 
  132.     Else 
  133.         If UCase$(mystr) <= "Z" And UCase$(mystr) >= "A" Then 
  134.             getFirstLetterOfCnWord = UCase$(Left$(mystr, 1))  
  135.         Else 
  136.             getFirstLetterOfCnWord = mystr  
  137.         End If 
  138.     End If 
  139. End Function 



 

你可能感兴趣的:(Excel,职场,休闲,提取汉字首字母)