ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: ttui

[解决多音字]汉字转拼音的完美解决方案[12.11.29更新]

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2007-4-3 14:10 | 显示全部楼层
本帖已被收录到知识树中,索引项:文本转换

接着,把英文字母组成的拼音转化为民国拼音。(好像也叫做仓颉拼音的。现在主要是台巴子在用。)

Function PY(EPinYin)
    P = EPinYin
       
    P = Replace(P, "iang", ChrW(12583) & ChrW(12580))
    P = Replace(P, "yang", ChrW(12583) & ChrW(12580))
   
    P = Replace(P, "iong", ChrW(12585) & ChrW(12581))
    P = Replace(P, "yong", ChrW(12585) & ChrW(12581))
       
    P = Replace(P, "yuan", ChrW(12585) & ChrW(12578))
       
    P = Replace(P, "juan", ChrW(12560) & ChrW(12585) & ChrW(12578))
    P = Replace(P, "quan", ChrW(12561) & ChrW(12585) & ChrW(12578))
    P = Replace(P, "xuan", ChrW(12562) & ChrW(12585) & ChrW(12578))
       
   
    P = Replace(P, "ang", ChrW(12580))
    P = Replace(P, "eng", ChrW(12581))
    P = Replace(P, "ong", ChrW(12584) & ChrW(12581))
           
    P = Replace(P, "iao", ChrW(12583) & ChrW(12576))
    P = Replace(P, "yao", ChrW(12583) & ChrW(12576))
       
    P = Replace(P, "iou", ChrW(12583) & ChrW(12577))
    P = Replace(P, "you", ChrW(12583) & ChrW(12577))
       
    P = Replace(P, "ian", ChrW(12583) & ChrW(12578))
    P = Replace(P, "yan", ChrW(12583) & ChrW(12578))
       
    P = Replace(P, "ing", ChrW(12583) & ChrW(12581))
       
    P = Replace(P, "yue", ChrW(12585) & ChrW(12573))
    P = Replace(P, "yun", ChrW(12585) & ChrW(12579))
       
    P = Replace(P, "jue", ChrW(12560) & ChrW(12585) & ChrW(12573))
    P = Replace(P, "que", ChrW(12561) & ChrW(12585) & ChrW(12573))
    P = Replace(P, "xue", ChrW(12562) & ChrW(12585) & ChrW(12573))
       
    P = Replace(P, "jun", ChrW(12560) & ChrW(12585) & ChrW(12579))
    P = Replace(P, "qun", ChrW(12561) & ChrW(12585) & ChrW(12579))
    P = Replace(P, "xun", ChrW(12562) & ChrW(12585) & ChrW(12579))
       
    P = Replace(P, "wu", ChrW(12584))
    P = Replace(P, "ui", ChrW(12584) & ChrW(12575))
           
    P = Replace(P, "ve", ChrW(12585) & ChrW(12573))
    P = Replace(P, "vn", ChrW(12585) & ChrW(12579))
   
    P = Replace(P, "ya", ChrW(12583) & ChrW(12570))
    P = Replace(P, "ye", ChrW(12583) & ChrW(12573))
    P = Replace(P, "yu", ChrW(12585))
       
    P = Replace(P, "ju", ChrW(12560) & ChrW(12585))
    P = Replace(P, "qu", ChrW(12561) & ChrW(12585))
    P = Replace(P, "xu", ChrW(12562) & ChrW(12585))
           
    P = Replace(P, "ia", ChrW(12583) & ChrW(12570))
    P = Replace(P, "ie", ChrW(12583) & ChrW(12573))
    P = Replace(P, "iu", ChrW(12583) & ChrW(12577))
   
    P = Replace(P, "in", ChrW(12583) & ChrW(12579))
    P = Replace(P, "un", ChrW(12584) & ChrW(12579))
           
    P = Replace(P, "ai", ChrW(12574))
    P = Replace(P, "ei", ChrW(12575))
       
    P = Replace(P, "ao", ChrW(12576))
    P = Replace(P, "ou", ChrW(12577))
       
    P = Replace(P, "an", ChrW(12578))
    P = Replace(P, "en", ChrW(12579))
       
    P = Replace(P, "er", ChrW(12582))
       
    P = Replace(P, "zh", ChrW(12563))
    P = Replace(P, "ch", ChrW(12564))
    P = Replace(P, "sh", ChrW(12565))
       
    P = Replace(P, "b", ChrW(12549))
    P = Replace(P, "p", ChrW(12550))
    P = Replace(P, "m", ChrW(12551))
    P = Replace(P, "f", ChrW(12552))
       
    P = Replace(P, "d", ChrW(12553))
    P = Replace(P, "t", ChrW(12554))
    P = Replace(P, "n", ChrW(12555))
    P = Replace(P, "l", ChrW(12556))
           
    P = Replace(P, "g", ChrW(12557))
    P = Replace(P, "k", ChrW(12558))
    P = Replace(P, "h", ChrW(12559))
           
    P = Replace(P, "j", ChrW(12560))
    P = Replace(P, "q", ChrW(12561))
    P = Replace(P, "x", ChrW(12562))
           
    P = Replace(P, "r", ChrW(12566))
   
    P = Replace(P, "z", ChrW(12567))
    P = Replace(P, "c", ChrW(12568))
    P = Replace(P, "s", ChrW(12569))
           
    P = Replace(P, "a", ChrW(12570))
    P = Replace(P, "o", ChrW(12571))
    P = Replace(P, "e", ChrW(12572))
       
    P = Replace(P, "i", ChrW(12583))
    P = Replace(P, "y", "")
          
    P = Replace(P, "w", ChrW(12584))
    P = Replace(P, "u", ChrW(12584))
    P = Replace(P, "v", ChrW(12585))
       
    PY = P
End Function

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-4-3 15:41 | 显示全部楼层
hehe,没想到真的会有人对这个代码感兴趣
改的真的很好,看得出花了不少功夫,
香川群子一定在日企上班吧,想必一般人不会用日版office:)

群子的仓颉码我可是一点都不会,早就觉得那是种很有趣的编码,这下有机会了解下了:)

更新提供的函数只是一个例子,演示如何实用类,只需要稍微改下函数就能实现指定分隔符之类的功能。
抛弃非中文字符的问题也可以解决,
若IFELanguage_GetMorphResult返回结果为空(""),则将源字符加入作为返回值返回即可。

多谢群子的支持[em23]

TA的精华主题

TA的得分主题

发表于 2007-4-5 08:25 | 显示全部楼层
建议香川群子大师也传一个如同一楼的文件上来让我们菜鸟使用.谢谢

TA的精华主题

TA的得分主题

发表于 2007-4-5 09:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

好东西,一定要顶

最好能祥以前一位高人的拼音方案,带有参数:pinyin(a1,2)

比如:1 带有注音

      2 没有注音

      3 开头字母。。。。。。。

TA的精华主题

TA的得分主题

发表于 2007-4-5 10:37 | 显示全部楼层

请看30楼附件。

特别的地方,在于加入了7000多个常用字的五笔码。

带有注音的那就是楼主开发的=HzToPy()

要改成没有注音的,那就使用=EP(HzToPy())

第三功能,待完善。

如果不需要五笔的话,就简单了。

TA的精华主题

TA的得分主题

发表于 2007-4-5 12:42 | 显示全部楼层

高手就是高手,光会一个语言是不行的。我们还要努力呀!

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-4-5 16:10 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-4-5 20:21 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

经过楼主第二次更新,增加了很多可选参数之后,我真的觉得很完美了.

楼主真是高手,也非常感谢他为我们提供了这么好的东东.

TA的精华主题

TA的得分主题

发表于 2007-4-6 08:46 | 显示全部楼层

请楼主帮忙完成《日文的汉字转化为假名》的函数。

下面是相关日文MSIME的资料链接。谢谢!

http://msdn2.microsoft.com/en-us/library/ms970233.aspx

TA的精华主题

TA的得分主题

发表于 2007-4-6 09:47 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 12:44 , Processed in 0.043103 second(s), 5 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表