Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1894|回复: 7

[已解决]拼音简码问题!C列内容包含【 】 就会转换错误~!求助

[复制链接]
发表于 2016-4-22 19:58 | 显示全部楼层 |阅读模式
拼音简码问题!C列内容包含【 】 就会转换错误~!求助
拼音简04.rar (22.54 KB, 下载次数: 13)
发表于 2016-4-22 20:24 | 显示全部楼层
本帖最后由 fggf 于 2016-4-22 20:34 编辑

“【”或“】”是固定在最后一个字符吗
是的话用这个:=IF(ISERR(拼音简码(C2)),拼音简码(LEFT(C2,LEN(C2)-1)),拼音简码(C2))下拉
回复

使用道具 举报

发表于 2016-4-22 20:30 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2016-4-22 20:42 | 显示全部楼层
fggf 发表于 2016-4-22 20:24
“【”或“】”是固定在最后一个字符吗
是的话用这个:=IF(ISERR(拼音简码(C2)),拼音简码(LEFT(C2,LEN(C2) ...

【】不固定,以下代码如增加到红色位置就提示 太长。有没有办法解决?

Function 拼音简码(汉字 As Variant)
     Dim hz As String

     hz = StrConv(汉字, vbNarrow)
     For i = 1 To Len(hz)
         If Asc(Mid(hz, i, 1)) = AscB(Mid(hz, i, 1)) Then
             拼音简码 = 拼音简码 & UCase(Mid(hz, i, 1))
         Else
             拼音简码 = 拼音简码 & Application.VLookup(Mid(hz, i, 1), [{"阿","A";"啊","A";"巴","B";"芭","B";"擦","C";"搭","D";"蛾","E";"发","F";"噶","G";"哈","H";"击","J";"喀","K";"垃","L";"妈","M";"拿","N";"哦","O";"啪","P";"七","Q";"期","Q";"然","R";"撒","S";"塌","T";"挖","W";"西","X";"昔","X";"压","Y";"匝","Z";"【","";"】",""}], 2)
         End If
     Next i
End Function


回复

使用道具 举报

发表于 2016-4-22 20:54 | 显示全部楼层    本楼为最佳答案   
Function 拼音简码(汉字 As Variant)
     Dim hz As String
     汉字 = Replace(Replace(汉字, "【", ""), "】", "")
     hz = StrConv(汉字, vbNarrow)
     For i = 1 To Len(hz)
         If Asc(Mid(hz, i, 1)) = AscB(Mid(hz, i, 1)) Then
             拼音简码 = 拼音简码 & UCase(Mid(hz, i, 1))
         Else
             拼音简码 = 拼音简码 & Application.VLookup(Mid(hz, i, 1), [{"阿","A";"啊","A";"巴","B";"芭","B";"擦","C";"搭","D";"蛾","E";"发","F";"噶","G";"哈","H";"击","J";"喀","K";"垃","L";"妈","M";"拿","N";"哦","O";"啪","P";"七","Q";"期","Q";"然","R";"撒","S";"塌","T";"挖","W";"西","X";"昔","X";"压","Y";"匝","Z"}], 2)
         End If
     Next i
End Function
回复

使用道具 举报

发表于 2016-4-22 21:02 | 显示全部楼层
或则
Function 拼音简码(汉字 As Variant)
     Dim hz As String
     hz = StrConv(汉字, vbNarrow)
     For i = 1 To Len(hz)
         If InStr("【】", Mid(hz, i, 1)) Then GoTo 10
         If Asc(Mid(hz, i, 1)) = AscB(Mid(hz, i, 1)) Then
             拼音简码 = 拼音简码 & UCase(Mid(hz, i, 1))
         Else
             拼音简码 = 拼音简码 & Application.VLookup(Mid(hz, i, 1), [{"阿","A";"啊","A";"巴","B";"芭","B";"擦","C";"搭","D";"蛾","E";"发","F";"噶","G";"哈","H";"击","J";"喀","K";"垃","L";"妈","M";"拿","N";"哦","O";"啪","P";"七","Q";"期","Q";"然","R";"撒","S";"塌","T";"挖","W";"西","X";"昔","X";"压","Y";"匝","Z"}], 2)
         End If
10     Next i
End Function
回复

使用道具 举报

发表于 2016-4-22 21:34 | 显示全部楼层
发现你那个被搜索数据有重复,修改如下
Function 拼音简码(汉字 As Variant)
    Dim hz As String
    hz = StrConv(汉字, vbNarrow)
    For i = 1 To Len(hz)
        If Asc(Mid(hz, i, 1)) = AscB(Mid(hz, i, 1)) Then
            拼音简码 = 拼音简码 & UCase(Mid(hz, i, 1))
        Else
            拼音简码 = 拼音简码 & Application.VLookup(Mid(hz, i, 1), [{"【","";"】","";"啊","A";"芭","B";"擦","C";"搭","D";"蛾","E";"发","F";"噶","G";"哈","H";"击","J";"喀","K";"垃","L";"妈","M";"拿","N";"哦","O";"啪","P";"七","Q";"期","Q";"然","R";"撒","S";"塌","T";"挖","W";"西","X";"昔","X";"压","Y";"匝","Z"}], 2)
        End If
    Next i
End Function
回复

使用道具 举报

 楼主| 发表于 2016-4-22 23:03 | 显示全部楼层
zjdh 发表于 2016-4-22 21:34
发现你那个被搜索数据有重复,修改如下
Function 拼音简码(汉字 As Variant)
    Dim hz As String

谢谢老师帮忙修改


啊 可以被识别字母 A
阿 就识别不了

芭 可以被识别字母B
巴 就识别不了

红色部分都是,识别不了字母的。
[{"阿","A";"啊","A";"巴","B";"芭","B";"擦","C";"搭","D";"蛾","E";"发","F";"噶","G";"哈","H";"击","J";"喀","K";"垃","L";"妈","M";"拿","N";"哦","O";"啪","P";"七","Q";"期","Q";"然","R";"撒","S";"塌","T";"挖","W";"西","X";"昔","X";"压","Y";"匝","Z"}], 2)



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-24 16:01 , Processed in 0.350717 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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