0%

Excel从字符串中提取拼音GetPinYin-VBA编程

Excel把字符串转换成拼音

VBA即Visual Basic宏语言是新一代标准宏语言,VBA是一种编程语言,它依赖于Excel而存在,不能独立于Excel之外运行,通过VBA可以实现各种操作EXCEL的自动化。今天我就以汉字转拼音的自定义函数来探索VBA的冰山一角。

VBA代码

公式名称: GetPinYin(word, true) 用途说明: 在Excel表格中,使用拼音公式GetPinYin()将汉字转成拼音 参数说明: 参数word指汉字,0,1指是否添加空格 运行环境: Excel2007及以上

脚本如下:

``` Function PYstr(p As String) As String i = Asc(p) Select Case i Case -20319 To -20318: PYstr = "a" Case -20317 To -20305: PYstr = "ai" Case -20304 To -20296: PYstr = "an" Case -20295 To -20293: PYstr = "ang" Case -20292 To -20284: PYstr = "ao" Case -20283 To -20266: PYstr = "ba" Case -20265 To -20258: PYstr = "bai" Case -20257 To -20243: PYstr = "ban" Case -20242 To -20231: PYstr = "bang" Case -20230 To -20052: PYstr = "bao" Case -20051 To -20037: PYstr = "bei" Case -20036 To -20033: PYstr = "ben" Case -20032 To -20027: PYstr = "beng" Case -20026 To -20003: PYstr = "bi" Case -20002 To -19991: PYstr = "bian" Case -19990 To -19987: PYstr = "biao" Case -19986 To -19983: PYstr = "bie" Case -19982 To -19977: PYstr = "bin" Case -19976 To -19806: PYstr = "bing" Case -19805 To -19785: PYstr = "bo" Case -19784 To -19776: PYstr = "bu" Case -19775 To -19775: PYstr = "ca" Case -19774 To -19764: PYstr = "cai" Case -19763 To -19757: PYstr = "can" Case -19756 To -19752: PYstr = "cang" Case -19751 To -19747: PYstr = "cao" Case -19746 To -19742: PYstr = "ce" Case -19741 To -19740: PYstr = "ceng" Case -19739 To -19729: PYstr = "cha" Case -19728 To -19726: PYstr = "chai" Case -19725 To -19716: PYstr = "chan" Case -19715 To -19541: PYstr = "chang" Case -19540 To -19532: PYstr = "chao" Case -19531 To -19526: PYstr = "che" Case -19525 To -19516: PYstr = "chen" Case -19515 To -19501: PYstr = "cheng" Case -19500 To -19485: PYstr = "chi" Case -19484 To -19480: PYstr = "chong" Case -19479 To -19468: PYstr = "chou" Case -19467 To -19290: PYstr = "chu" Case -19289 To -19289: PYstr = "chuai" Case -19288 To -19282: PYstr = "chuan" Case -19281 To -19276: PYstr = "chuang" Case -19275 To -19271: PYstr = "chui" Case -19270 To -19264: PYstr = "chun" Case -19263 To -19262: PYstr = "chuo" Case -19261 To -19250: PYstr = "ci" Case -19249 To -19244: PYstr = "cong" Case -19243 To -19243: PYstr = "cou" Case -19242 To -19239: PYstr = "cu" Case -19238 To -19236: PYstr = "cuan" Case -19235 To -19228: PYstr = "cui" Case -19227 To -19225: PYstr = "cun" Case -19224 To -19219: PYstr = "cuo" Case -19218 To -19213: PYstr = "da" Case -19212 To -19039: PYstr = "dai" Case -19038 To -19024: PYstr = "dan" Case -19023 To -19019: PYstr = "dang" Case -19018 To -19007: PYstr = "dao" Case -19006 To -19004: PYstr = "de" Case -19003 To -18997: PYstr = "deng" Case -18996 To -18978: PYstr = "di" Case -18977 To -18962: PYstr = "dian" Case -18961 To -18953: PYstr = "diao" Case -18952 To -18784: PYstr = "die" Case -18783 To -18775: PYstr = "ding" Case -18774 To -18774: PYstr = "diu" Case -18773 To -18527: PYstr = "dong" Case -18526 To -18519: PYstr = "fa" Case -18518 To -18502: PYstr = "fan" Case -18501 To -18491: PYstr = "fang" Case -18490 To -18479: PYstr = "fei" Case -18478 To -18464: PYstr = "fen" Case -18463 To -18449: PYstr = "feng" Case -18448 To -18448: PYstr = "fo" Case -18447 To -18447: PYstr = "fou" Case -18446 To -18240: PYstr = "fu" Case -18239 To -18238: PYstr = "ga" Case -18237 To -18232: PYstr = "gai" Case -18231 To -18221: PYstr = "gan" Case -18220 To -18212: PYstr = "gang" Case -18211 To -18202: PYstr = "gao" Case -18201 To -18185: PYstr = "ge" Case -18184 To -18184: PYstr = "gei" Case -18183 To -18182: PYstr = "gen" Case -18181 To -18013: PYstr = "geng" Case -18012 To -17998: PYstr = "gong" Case -17997 To -17989: PYstr = "gou" Case -17988 To -17971: PYstr = "gu" Case -17970 To -17965: PYstr = "gua" Case -17964 To -17962: PYstr = "guai" Case -17961 To -17951: PYstr = "guan" Case -17950 To -17948: PYstr = "guang" Case -17947 To -17932: PYstr = "gui" Case -17931 To -17929: PYstr = "gun" Case -17928 To -17923: PYstr = "guo" Case -17922 To -17760: PYstr = "ha" Case -17759 To -17753: PYstr = "hai" Case -17752 To -17734: PYstr = "han" Case -17733 To -17731: PYstr = "hang" Case -17730 To -17722: PYstr = "hao" Case -17721 To -17704: PYstr = "he" Case -17703 To -17702: PYstr = "hei" Case -17701 To -17698: PYstr = "hen" Case -17697 To -17693: PYstr = "heng" Case -17692 To -17684: PYstr = "hong" Case -17683 To -17677: PYstr = "hou" Case -17676 To -17497: PYstr = "hu" Case -17496 To -17488: PYstr = "hua" Case -17487 To -17483: PYstr = "huai" Case -17482 To -17469: PYstr = "huan" Case -17468 To -17455: PYstr = "huang" Case -17454 To -17434: PYstr = "hui" Case -17433 To -17428: PYstr = "hun" Case -17427 To -17418: PYstr = "huo" Case -17417 To -17203: PYstr = "ji" Case -17202 To -17186: PYstr = "jia" Case -17185 To -16984: PYstr = "jian" Case -16983 To -16971: PYstr = "jiang" Case -16970 To -16943: PYstr = "jiao" Case -16942 To -16916: PYstr = "jie" Case -16915 To -16734: PYstr = "jin" Case -16733 To -16709: PYstr = "jing" Case -16708 To -16707: PYstr = "jiong" Case -16706 To -16690: PYstr = "jiu" Case -16689 To -16665: PYstr = "ju" Case -16664 To -16658: PYstr = "juan" Case -16657 To -16648: PYstr = "jue" Case -16647 To -16475: PYstr = "jun" Case -16474 To -16471: PYstr = "ka" Case -16470 To -16466: PYstr = "kai" Case -16465 To -16460: PYstr = "kan" Case -16459 To -16453: PYstr = "kang" Case -16452 To -16449: PYstr = "kao" Case -16448 To -16434: PYstr = "ke" Case -16433 To -16430: PYstr = "ken" Case -16429 To -16428: PYstr = "keng" Case -16427 To -16424: PYstr = "kong" Case -16423 To -16420: PYstr = "kou" Case -16419 To -16413: PYstr = "ku" Case -16412 To -16408: PYstr = "kua" Case -16407 To -16404: PYstr = "kuai" Case -16403 To -16402: PYstr = "kuan" Case -16401 To -16394: PYstr = "kuang" Case -16393 To -16221: PYstr = "kui" Case -16220 To -16217: PYstr = "kun" Case -16216 To -16213: PYstr = "kuo" Case -16212 To -16206: PYstr = "la" Case -16205 To -16203: PYstr = "lai" Case -16202 To -16188: PYstr = "lan" Case -16187 To -16181: PYstr = "lang" Case -16180 To -16172: PYstr = "lao" Case -16171 To -16170: PYstr = "le" Case -16169 To -16159: PYstr = "lei" Case -16158 To -16156: PYstr = "leng" Case -16155 To -15960: PYstr = "li" Case -15959 To -15959: PYstr = "lia" Case -15958 To -15945: PYstr = "lian" Case -15944 To -15934: PYstr = "liang" Case -15933 To -15921: PYstr = "liao" Case -15920 To -15916: PYstr = "lie" Case -15915 To -15904: PYstr = "lin" Case -15903 To -15890: PYstr = "ling" Case -15889 To -15879: PYstr = "liu" Case -15878 To -15708: PYstr = "long" Case -15707 To -15702: PYstr = "lou" Case -15701 To -15682: PYstr = "lu" Case -15681 To -15668: PYstr = "lv" Case -15667 To -15662: PYstr = "luan" Case -15661 To -15660: PYstr = "lue" Case -15659 To -15653: PYstr = "lun" Case -15652 To -15641: PYstr = "luo" Case -15640 To -15632: PYstr = "ma" Case -15631 To -15626: PYstr = "mai" Case -15625 To -15455: PYstr = "man" Case -15454 To -15449: PYstr = "mang" Case -15448 To -15437: PYstr = "mao" Case -15436 To -15436: PYstr = "me" Case -15435 To -15420: PYstr = "mei" Case -15419 To -15417: PYstr = "men" Case -15416 To -15409: PYstr = "meng" Case -15408 To -15395: PYstr = "mi" Case -15394 To -15386: PYstr = "mian" Case -15385 To -15378: PYstr = "miao" Case -15377 To -15376: PYstr = "mie" Case -15375 To -15370: PYstr = "min" Case -15369 To -15364: PYstr = "ming" Case -15363 To -15363: PYstr = "miu" Case -15362 To -15184: PYstr = "mo" Case -15183 To -15181: PYstr = "mou" Case -15180 To -15166: PYstr = "mu" Case -15165 To -15159: PYstr = "na" Case -15158 To -15154: PYstr = "nai" Case -15153 To -15151: PYstr = "nan" Case -15150 To -15150: PYstr = "nang" Case -15149 To -15145: PYstr = "nao" Case -15144 To -15144: PYstr = "ne" Case -15143 To -15142: PYstr = "nei" Case -15141 To -15141: PYstr = "nen" Case -15140 To -15140: PYstr = "neng" Case -15139 To -15129: PYstr = "ni" Case -15128 To -15122: PYstr = "nian" Case -15121 To -15120: PYstr = "niang" Case -15119 To -15118: PYstr = "niao" Case -15117 To -15111: PYstr = "nie" Case -15110 To -15110: PYstr = "nin" Case -15109 To -14942: PYstr = "ning" Case -14941 To -14938: PYstr = "niu" Case -14937 To -14934: PYstr = "nong" Case -14933 To -14931: PYstr = "nu" Case -14930 To -14930: PYstr = "nv" Case -14929 To -14929: PYstr = "nuan" Case -14928 To -14927: PYstr = "nue" Case -14926 To -14923: PYstr = "nuo" Case -14922 To -14922: PYstr = "o" Case -14921 To -14915: PYstr = "ou" Case -14914 To -14909: PYstr = "pa" Case -14908 To -14903: PYstr = "pai" Case -14902 To -14895: PYstr = "pan" Case -14894 To -14890: PYstr = "pang" Case -14889 To -14883: PYstr = "pao" Case -14882 To -14874: PYstr = "pei" Case -14873 To -14872: PYstr = "pen" Case -14871 To -14858: PYstr = "peng" Case -14857 To -14679: PYstr = "pi" Case -14678 To -14675: PYstr = "pian" Case -14674 To -14671: PYstr = "piao" Case -14670 To -14669: PYstr = "pie" Case -14668 To -14664: PYstr = "pin" Case -14663 To -14655: PYstr = "ping" Case -14654 To -14646: PYstr = "po" Case -14645 To -14631: PYstr = "pu" Case -14630 To -14595: PYstr = "qi" Case -14594 To -14430: PYstr = "qia" Case -14429 To -14408: PYstr = "qian" Case -14407 To -14400: PYstr = "qiang" Case -14399 To -14385: PYstr = "qiao" Case -14384 To -14380: PYstr = "qie" Case -14379 To -14369: PYstr = "qin" Case -14368 To -14356: PYstr = "qing" Case -14355 To -14354: PYstr = "qiong" Case -14353 To -14346: PYstr = "qiu" Case -14345 To -14171: PYstr = "qu" Case -14170 To -14160: PYstr = "quan" Case -14159 To -14152: PYstr = "que" Case -14151 To -14150: PYstr = "qun" Case -14149 To -14146: PYstr = "ran" Case -14145 To -14141: PYstr = "rang" Case -14140 To -14138: PYstr = "rao" Case -14137 To -14136: PYstr = "re" Case -14135 To -14126: PYstr = "ren" Case -14125 To -14124: PYstr = "reng" Case -14123 To -14123: PYstr = "ri" Case -14122 To -14113: PYstr = "rong" Case -14112 To -14110: PYstr = "rou" Case -14109 To -14100: PYstr = "ru" Case -14099 To -14098: PYstr = "ruan" Case -14097 To -14095: PYstr = "rui" Case -14094 To -14093: PYstr = "run" Case -14092 To -14091: PYstr = "ruo" Case -14090 To -14088: PYstr = "sa" Case -14087 To -14084: PYstr = "sai" Case -14083 To -13918: PYstr = "san" Case -13917 To -13915: PYstr = "sang" Case -13914 To -13911: PYstr = "sao" Case -13910 To -13908: PYstr = "se" Case -13907 To -13907: PYstr = "sen" Case -13906 To -13906: PYstr = "seng" Case -13905 To -13897: PYstr = "sha" Case -13896 To -13895: PYstr = "shai" Case -13894 To -13879: PYstr = "shan" Case -13878 To -13871: PYstr = "shang" Case -13870 To -13860: PYstr = "shao" Case -13859 To -13848: PYstr = "she" Case -13847 To -13832: PYstr = "shen" Case -13831 To -13659: PYstr = "sheng" Case -13658 To -13612: PYstr = "shi" Case -13611 To -13602: PYstr = "shou" Case -13601 To -13407: PYstr = "shu" Case -13406 To -13405: PYstr = "shua" Case -13404 To -13401: PYstr = "shuai" Case -13400 To -13399: PYstr = "shuan" Case -13398 To -13396: PYstr = "shuang" Case -13395 To -13392: PYstr = "shui" Case -13391 To -13388: PYstr = "shun" Case -13387 To -13384: PYstr = "shuo" Case -13383 To -13368: PYstr = "si" Case -13367 To -13360: PYstr = "song" Case -13359 To -13357: PYstr = "sou" Case -13356 To -13344: PYstr = "su" Case -13343 To -13341: PYstr = "suan" Case -13340 To -13330: PYstr = "sui" Case -13329 To -13327: PYstr = "sun" Case -13326 To -13319: PYstr = "suo" Case -13318 To -13148: PYstr = "ta" Case -13147 To -13139: PYstr = "tai" Case -13138 To -13121: PYstr = "tan" Case -13120 To -13108: PYstr = "tang" Case -13107 To -13097: PYstr = "tao" Case -13096 To -13096: PYstr = "te" Case -13095 To -13092: PYstr = "teng" Case -13091 To -13077: PYstr = "ti" Case -13076 To -13069: PYstr = "tian" Case -13068 To -13064: PYstr = "tiao" Case -13063 To -13061: PYstr = "tie" Case -13060 To -12889: PYstr = "ting" Case -12888 To -12876: PYstr = "tong" Case -12875 To -12872: PYstr = "tou" Case -12871 To -12861: PYstr = "tu" Case -12860 To -12859: PYstr = "tuan" Case -12858 To -12853: PYstr = "tui" Case -12852 To -12850: PYstr = "tun" Case -12849 To -12839: PYstr = "tuo" Case -12838 To -12832: PYstr = "wa" Case -12831 To -12830: PYstr = "wai" Case -12829 To -12813: PYstr = "wan" Case -12812 To -12803: PYstr = "wang" Case -12802 To -12608: PYstr = "wei" Case -12607 To -12598: PYstr = "wen" Case -12597 To -12595: PYstr = "weng" Case -12594 To -12586: PYstr = "wo" Case -12585 To -12557: PYstr = "wu" Case -12556 To -12360: PYstr = "xi" Case -12359 To -12347: PYstr = "xia" Case -12346 To -12321: PYstr = "xian" Case -12320 To -12301: PYstr = "xiang" Case -12300 To -12121: PYstr = "xiao" Case -12120 To -12100: PYstr = "xie" Case -12099 To -12090: PYstr = "xin" Case -12089 To -12075: PYstr = "xing" Case -12074 To -12068: PYstr = "xiong" Case -12067 To -12059: PYstr = "xiu" Case -12058 To -12040: PYstr = "xu" Case -12039 To -11868: PYstr = "xuan" Case -11867 To -11862: PYstr = "xue" Case -11861 To -11848: PYstr = "xun" Case -11847 To -11832: PYstr = "ya" Case -11831 To -11799: PYstr = "yan" Case -11798 To -11782: PYstr = "yang" Case -11781 To -11605: PYstr = "yao" Case -11604 To -11590: PYstr = "ye" Case -11589 To -11537: PYstr = "yi" Case -11536 To -11359: PYstr = "yin" Case -11358 To -11341: PYstr = "ying" Case -11340 To -11340: PYstr = "yo" Case -11339 To -11325: PYstr = "yong" Case -11324 To -11304: PYstr = "you" Case -11303 To -11098: PYstr = "yu" Case -11097 To -11078: PYstr = "yuan" Case -11077 To -11068: PYstr = "yue" Case -11067 To -11056: PYstr = "yun" Case -11055 To -11053: PYstr = "za" Case -11052 To -11046: PYstr = "zai" Case -11045 To -11042: PYstr = "zan" Case -11041 To -11039: PYstr = "zang" Case -11038 To -11025: PYstr = "zao" Case -11024 To -11021: PYstr = "ze" Case -11020 To -11020: PYstr = "zei" Case -11019 To -11019: PYstr = "zen" Case -11018 To -11015: PYstr = "zeng" Case -11014 To -10839: PYstr = "zha" Case -10838 To -10833: PYstr = "zhai" Case -10832 To -10816: PYstr = "zhan" Case -10815 To -10801: PYstr = "zhang" Case -10800 To -10791: PYstr = "zhao" Case -10790 To -10781: PYstr = "zhe" Case -10780 To -10765: PYstr = "zhen" Case -10764 To -10588: PYstr = "zheng" Case -10587 To -10545: PYstr = "zhi" Case -10544 To -10534: PYstr = "zhong" Case -10533 To -10520: PYstr = "zhou" Case -10519 To -10332: PYstr = "zhu" Case -10331 To -10330: PYstr = "zhua" Case -10329 To -10329: PYstr = "zhuai" Case -10328 To -10323: PYstr = "zhuan" Case -10322 To -10316: PYstr = "zhuang" Case -10315 To -10310: PYstr = "zhui" Case -10309 To -10308: PYstr = "zhun" Case -10307 To -10297: PYstr = "zhuo" Case -10296 To -10282: PYstr = "zi" Case -10281 To -10275: PYstr = "zong" Case -10274 To -10271: PYstr = "zou" Case -10270 To -10263: PYstr = "zu" Case -10262 To -10261: PYstr = "zuan" Case -10260 To -10257: PYstr = "zui" Case -10256 To -10255: PYstr = "zun" Case -10254 To -10254: PYstr = "zuo" Case Else: PYstr = p End Select End Function Function GetPinYin(Str As String, bs As Boolean) As String For i = 1 To Len(Str) If bs = False Then GetPinYin = GetPinYin & PYstr(Mid(Str, i, 1)) Else GetPinYin = GetPinYin & PYstr(Mid(Str, i, 1)) & " " End If Next i End Function

``