现在的位置: 首页 > 精选转贴 > 正文

Excel 汉字转拼音完美解决方案

2014年07月07日 精选转贴 ⁄ 共 1773字 ⁄ 字号 暂无评论 ⁄ 阅读 8,395 次

  

在 Excel 中将汉字转换为拼音一直都是一个很大的难题,很多的用户希望有这样的一个函数能直接将汉字转为拼音。但是微软自带的函数只能够获取到汉字拼音的首字母, 网络上的其他解决方案也很是不完善(比如多音字的处理等)。这里提供一个比较完美的解决方案,具体见原作者说明:

 

20140707131945  

1文件名称 1下载链接
HztoPy.zip http://pan.baidu.com/s/1pJ8urW3
 

  

原作者说明:


请确认安装了微软拼音输入法,如出现注音错误,可尝试安装最新版本微软拼音。

'***************************************************************************
'*
'* Module:          HzToPy
'* Update:          2011-09-23
'* Author:          tt.t
'*
'* Description: 将中文字符串转换为拼音,就这些。原先这里写了太多废话,删了。
'*
'* Theory: 原理依然是通过IFELanguage接口实现。
'*        唯一需要解释的是如何解决多音字正确注音的问题。
'*        IFELanguage接口是能够正确返回很多多音字拼音的,但多音字的读音只有特定词汇中
'*        才能确认,因此在解析拼音时候不能把词拆成单字,否则多音字返回的拼音就很可能不对。
'*        之前版本中就是因为把词拆开获取拼音导致多音字拼音错误。
'*        这次的更新利用接口返回数据中标识每个拼音长度的数组实现了对返回拼音
'*        的按字拆分,无需再把词拆成字获取单个字的拼音,从而解决了多音字问题。
'*        需要说明的是,VB_MORRSLT结构就是MS文档中的MORRSLT结构,但是VBA自定义结构
'*        无法实现不按4字节对齐,使得不得不修改MORRSLT的定义方式,能这样修改只能说运气不错,
'*        因为被修改的部分刚好获取拼音用不到。
'*
'* Histroy:
'*        2011-09-23
'*        ● 重写主要代码,支持多音字,提高了运行效率。
'*        ● 取拼音首字时,ao, ai, ei, ou, er作为首字而不是原来的第一个字母。
'*        ● 为函数增加了注音方式选择,hàn可以显示为han或han4。
'*        ● 函数的使用与之前版本兼容,将模块中函数代码和HZ2PY类代码覆盖之前版本即可实现升级,
'*          无需修改文档中的公式。
'*        2011-04-07
'*        ● 更正CoTaskMemFree传递参数错误,消除了Win7等环境下崩溃。
'*        2007-04-03
'*        ● 更正redim时vba数组默认起始值错误。
'*        2007-04-02
'*        ● 最初版本,实现了由汉字获取拼音。
'*
'***************************************************************************

汉字转拼音举例:重庆重要1234,澳门
  
显示用空格分开的拼音  
公式: =HzToPy($b$14," ") 
结果: hàn zì zhuǎn pīn yīn jǔ lì : chóng qìng zhòng yào 1 2 3 4 , ào mén

显示用-分开的拼音,同时不显示注音符号  
公式: =HzToPy($b$14,"-",false) 
结果: han-zi-zhuan-pin-yin-ju-li-:-chong-qing-zhong-yao-1-2-3-4-,-ao-men

显示用空格分开的拼音,不显示注音符号,同时仅显示拼音的首字,并大写  
公式: =HzToPy($b$14, " ", false,true,false) 
结果: H Z ZH P Y J L : CH Q ZH Y 1 2 3 4 , AO M

显示用空格分开的拼音,不显示注音符号,同时仅显示拼音的首字母,并大写  
公式: =HzToPy($b$14 ," ", false,true, true) 
结果: H Z Z P Y J L : C Q Z Y 1 2 3 4 , A M 

 

给我留言

您必须 [ 登录 ] 才能发表留言!