Excel精英培训网

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

[已解决]VBA自定义函数提取汉字、字母、数字及符号

[复制链接]
发表于 2013-7-26 09:27 | 显示全部楼层 |阅读模式
从字符串中提取出汉字、字母、数字及符号,用公式,用自定义函数,对比如下面的附件。请大家帮忙讨论一下,能不能找到最优化的方法?在自定义函数中,为什么提取不出来“-”号(减号 )呢?怎么才能把短横线提取出来呢?
从混合字符串中提取汉字(带符号).zip (13.79 KB, 下载次数: 263)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-7-26 10:03 | 显示全部楼层
-在[]内有特殊含义,只表示一个区间,不是表示-这个字符
回复

使用道具 举报

发表于 2013-7-26 10:10 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2013-7-26 10:29 | 显示全部楼层
甲百 发表于 2013-7-26 10:03
-在[]内有特殊含义,只表示一个区间,不是表示-这个字符

哦,谢谢提醒!我去试试!
回复

使用道具 举报

 楼主| 发表于 2013-7-26 10:36 | 显示全部楼层
甲百 发表于 2013-7-26 10:10
再加一个or like "-" 条件吧

不能加or like,提示语法错误!
回复

使用道具 举报

发表于 2013-7-26 10:43 | 显示全部楼层
明白EFG的目的;但不明白CD的
回复

使用道具 举报

 楼主| 发表于 2013-7-26 11:11 | 显示全部楼层
爱疯 发表于 2013-7-26 10:43
明白EFG的目的;但不明白CD的

EFG是用自定义函数提取的,CD是用的EXCEL中自带的函数提取的,有点复杂,有时还会出错。
回复

使用道具 举报

发表于 2013-7-26 11:20 | 显示全部楼层    本楼为最佳答案   
Function MyGet(Srg As String, Optional n As Integer = False)
    Dim i As Integer
    Dim s, MyString As String
    Dim Bol As Boolean
   
    For i = 1 To Len(Srg)
        s = Mid(Srg, i, 1)
        If n = 1 Then
            Bol = Asc(s) < 0
        ElseIf n = 2 Then
            Bol = s Like "[a-z,A-Z, ,.,_,*,$,/,+,-]"
        ElseIf n = 0 Then
            Bol = s Like "[0-9,.,-,*,$,/,+,-]"
        End If
        If Bol Then MyString = MyString & s
    Next
    MyGet = MyString
End Function

回复

使用道具 举报

 楼主| 发表于 2013-7-26 11:34 | 显示全部楼层
爱疯 发表于 2013-7-26 11:20
Function MyGet(Srg As String, Optional n As Integer = False)
    Dim i As Integer
    Dim s, MyStr ...

原来把“-”号放在最后就可以了啊!谢谢你帮我解决了这个问题!
回复

使用道具 举报

发表于 2015-8-3 15:12 | 显示全部楼层
好牛啊,找了半天,这个问题终于解决了,谢谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 03:17 , Processed in 0.433273 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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