Excel精英培训网

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

[已解决]正则表达式提取字母

[复制链接]
发表于 2015-11-17 21:06 | 显示全部楼层 |阅读模式
1、国防是国家为了防备和抵抗,制止,保卫国家主权、统一、领土完整和安全所进行的军事活动。(A)
20、中国人民解放军现役部队由陆军、海军、空军和(C)组成。
65、(D)有其鲜明的阶级性,不同的国家有不同的国防政策。
Function DelSpace(Rng As Range)
    Dim Reg
    Dim MyStr As String
    Set Reg = CreateObject("vbscript.regexp")
    With Reg
        .Pattern = "[A-Z](?=))"
        .Global = True
        MyStr = Reg.Replace(Rng, "        ")
    End With
    DelSpace = MyStr
End Function
我是想提取括号里面的字母。但是现在结果是:1、国防是国家为了防备和抵抗,制止,保卫国家主权、统一、领土完整和安全所进行的军事活动。(        )
怎么才能提取字母呢!谢谢!


最佳答案
2015-11-17 21:19
本帖最后由 爱疯 于 2015-11-17 21:30 编辑

Sub test()
    MsgBox DelSpace([a1].Text)
End Sub

Function DelSpace(str As String) As String
    With CreateObject("vbscript.regexp")
        .Pattern = "[A-Z](?=))"
        .Global = True
        DelSpace = IIf(.Execute(str).Count, .Execute(str)(0), "")
    End With
End Function


22.rar (15.41 KB, 下载次数: 8)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2015-11-17 21:19 | 显示全部楼层    本楼为最佳答案   
本帖最后由 爱疯 于 2015-11-17 21:30 编辑

Sub test()
    MsgBox DelSpace([a1].Text)
End Sub

Function DelSpace(str As String) As String
    With CreateObject("vbscript.regexp")
        .Pattern = "[A-Z](?=))"
        .Global = True
        DelSpace = IIf(.Execute(str).Count, .Execute(str)(0), "")
    End With
End Function


22.rar (15.41 KB, 下载次数: 8)
回复

使用道具 举报

 楼主| 发表于 2015-11-17 21:27 | 显示全部楼层
爱疯 发表于 2015-11-17 21:19
Sub test()
    MsgBox DelSpace([a1].Text)
End Sub

仙人,谢谢!!。就要这样。。
回复

使用道具 举报

 楼主| 发表于 2015-11-17 22:11 | 显示全部楼层
爱疯 发表于 2015-11-17 21:19
Sub test()
    MsgBox DelSpace([a1].Text)
End Sub

假如括号里面有多个字母呢?字母改表达式。
例如
1、现代国防的类型,按照性质可分为(AB)
2、国防的目的是(ABCD)
3、根据《中华人民共和国国防法》的规定,公民负有以下几个方面的国防义务(ABCD)
4、国防的经济手段主要有哪几种?(ABCD)
5、《中华人民共和国国防法》的使用范围包括(ABCD)
回复

使用道具 举报

发表于 2015-11-17 22:23 | 显示全部楼层
Function DelSpace(str As String) As String
    With CreateObject("vbscript.regexp")
        .Pattern = "[A-Z]+(?=))"
        .Global = True
        DelSpace = IIf(.Execute(str).Count, .Execute(str)(0), "")
    End With
End Function



增加1个加号
回复

使用道具 举报

 楼主| 发表于 2015-11-17 22:32 | 显示全部楼层
爱疯 发表于 2015-11-17 22:23
Function DelSpace(str As String) As String
    With CreateObject("vbscript.regexp")
        .Patte ...

谢了。。
回复

使用道具 举报

发表于 2015-11-17 23:23 | 显示全部楼层
用正则固然是一种不错的方法,但就你具体的数据来说,在这里用正则貌似不大妥当,假如题干中也有类似答案那样括号加字母这样的文字描述,就会出现错误的返回值了。
回复

使用道具 举报

发表于 2015-11-17 23:32 | 显示全部楼层
cxzfy12758 发表于 2015-11-17 22:11
假如括号里面有多个字母呢?字母改表达式。
例如
1、现代国防的类型,按照性质可分为(AB)

共同学习一下[em17]
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 21:25 , Processed in 0.454755 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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