精华内容
下载资源
问答
  • vba正则表达式

    2018-11-28 17:24:46
    vba正则表达式学习文档,涵盖详细正则语法说明、有具体功能例子,可做文档查询或实例参考。
  • 前面一节中我们讲过在正则表达式中 a|b 表示匹配a或者是b,同样 [ab]也表示匹配a或者b,而非匹配ab。[0-9]表示匹配0-9中任意一个数字,[234]表示匹配2或者是3或者是4,而非匹配234。也就是说表达或关系 可以用“|...

    我的目标:让中国的大学生走出校门的那一刻就已经具备这些Office技能,让职场人士能高效使用Office为其服务。支持鹏哥,也为自己加油!

    前面一节中我们讲过在正则表达式中  a|b  表示匹配a或者是b,同样  [ab]

    也表示匹配a或者b,而非匹配ab。

    [0-9]表示匹配0-9中任意一个数字,[234]表示匹配2或者是3或者是4,而非匹配234。

    也就是说表达或的关系   可以用“|”,也可以用[]

    下面我们看下具体的例子:

    f44a0a15bf6f660557187ce5c7d9e9f4.gif

    要求:左边单元格中的数据以空格区分,希望根据空格拆分到右边的单元格。

    代码:

    Sub 拆分()Dim regx As Object, rng As Range, mat, m, n%Set regx = CreateObject("vbscript.regexp")With regx.Global = True.Pattern = "[0-9]+"For Each rng In [a1:a6]    Set mat = .Execute(rng)           For Each m In mat                 n = n + 1                 Cells(rng.Row, n + 1) = m           Next           n = 0NextEnd WithEnd Sub

    .Pattern = "[0-9]+"表示匹配0-9的之间的任意一个数字,“+”号表示匹配数字一次或者是多次,这样就把每个以空格分割开的数字全匹配出来了。

    当然我们也可以写成  .Pattern = "\d+"。

    [0-9a-zA-z]表示从0-9任意数字、a到z任意字母,或者A到Z任意字母。

    本节的分享就到这里,鹏哥祝大家每天都有进步。

    加入米宏Office培训群,每天进步一点点!

    从基础操作到VBA,

    两杯咖啡的钱,

    换取一份如此详细的Excel视频资料,

    你还在犹豫?

    欲购从速,联系微信号:527240310

    非诚勿扰!

    每天进步一点,每天提升一点!

    展开全文
  • 昨天我们已经讲过了正则表达式中分组和不分组情况下匹配结果区别,今天我们再来剖析下分组后执行结果MatchCollection对象。还是昨天案例:我们看下本地窗口:mat对象集合有count、item、value三个属性。...

    我的目标:让中国的大学生走出校门的那一刻就已经具备这些office技能,让职场人士能高效使用office为其服务。支持我,也为自己加油!

    昨天我们已经讲过了正则表达式中分组和不分组的情况下匹配的结果的区别,今天我们再来剖析下分组后的执行结果MatchCollection对象。

    还是昨天的案例:

    5144385290e19702307f2a2a4f3ea05b.gif

    我们看下本地窗口:

    adacad0610ab39d45f40e9e3621573d6.png

    mat对象集合有count、item、value三个属性。

    664d3ba037cd75d22eb013d0fafb1b0c.png

    同样,SubMatche集合也有count、item、value三个属性,就像父子关系一样,SubMatche是mat的儿子。

    这些属性都是可以利用的。

    代码如下:

    Sub 提取3()

    Dim regx As Object, mat, m, n%

    Set regx = CreateObject("vbscript.regexp")

    With regx

    .Global = True

    .Pattern = "(\d+)\.?([一-龢]+)"

    Set mat = .Execute([a1])

    For n = 0 To mat.Count - 1

    Cells(n + 3, 2) = mat(n).submatches(0)

    Cells(n + 3, 3) = mat(n).submatches(1)

    Next

    End With

    End Sub

    红色部分的含义:直接执行完正则表达式后,mat.count表示匹配成功的条数,所以直接利用一个循环,从0循环到mat.count-1就可以把所有匹配到的内容循环出来,每循环一次就循环出一个item,mat(0)代表mat下面的第一个item,然后mat(n).submatches(0)就表示mat中第一个条目下,submatches中的第一个item的值。

    大家可以通过对比图片和代码来理解。

    通过本节我们对分组又有了更深的了解。

    本节的分享就到这里,鹏哥祝大家每天都有进步。

    聚米为谷

    博学宏才

    如果对VBA感兴趣

    手机端请扫描

    d6e4b098c73d2013ab237a26e3cc07ce.png

    电脑端请登录

    www.mihong.top

    找到《带你走进VBA的世界》

    跟着我一步步学习VBA

    本节的分享就到这里,鹏哥祝大家每天都有进步。34e66130d1891f7d1dd233ebf5f2229d.gif您点的每个赞,我都认真当成了喜欢
    展开全文
  • 了解了正则表达式的基本概念及用途之后,我们就来学习下具体用法,先以一个简单例子来了解下正则到底是怎么用。案例:比如,A1单元格中有一串字符:aabbccddaabbcc,我们要把其中a找到,然后替换成o。代码...

    我的目标:让中国的大学生走出校门的那一刻就已经具备这些office技能,让职场人士能高效使用office为其服务。支持我,也为自己加油!

    了解了正则表达式的基本概念及用途之后,我们就来学习下具体的用法,先以一个简单的例子来了解下正则到底是怎么用的。

    案例:

    比如,A1单元格中有一串字符:aabbccddaabbcc,我们要把其中的a找到,然后替换成o。

    代码如下:

    Sub test()

    Dim regx As Object, t$, k, s, n

    t = "aabbccddaabbcc"

    Set regx = CreateObject("vbscript.regexp")'引用正则表达式

    regx.Global = True  '查找范围,True表示全部查找,False表示只查找第一个,默认值是False。

    regx.Pattern = "a"  '引号里书写正则表达式,这里要查找a,就直接写个a

    Set k = regx.Execute(t)  'Execute方法的结果即k为一个对象,返回匹配成功的结果。

    For Each s In k '在k中循环可以得到该k中的每个元素。

    MsgBox s

    Next

    n = regx.Replace(t, "o")  '将匹配成功的结果做替换

    MsgBox n

    End Sub

    上面的代码后面都有注释,首先要引用正则表达式,前期绑定也可以,直接创建也可以,然后要对regexp的两个属性做出指定,接下来就可以利用正则的方法和属性来实现一些效果了。

    Global属性,指查找范围,True为全部查找,False只查找第一个,如果上面案例中其属性改为false,那么只会在该字符串中查找第一个a。

    Pattern属性,指的是正则表达式。

    下面讲下正则表达式的两个方法:

    Execute方法返回匹配成功的结果,是一个对象,通过for-each 可以循环其中的值。

    Replace方法将匹配的结果做替换,regx.Replace(t, "o"),t为原字符串,第二个参数为要替换为的结果。

    普通字符的替换:

    了解了基础的语法之后,我们来看下如何用正则对普通的字符做替换。

    49dc31fa951172a30efacf46967fee6d.gif

    如上例中,把A列部门中的门字去掉。

    思路:

    对A列部门循环,循环出来的值用正则表达式匹配“”字,并把匹配的结果替换成空。

    代码如下:

    Sub test1()

    Dim regx As Object, rng1 As Range

    Set regx = CreateObject("vbscript.regexp")

    With regx

        .Global = True

        .Pattern = "门"

    End With

    For Each rng1 In Range("a2:a11")

         rng1(1, 2).Value = regx.Replace(rng1.Value, "")

    Next

    End Sub

    这里注意regexp的两个属性可以用with语法来书写,这样显得简洁明了。当然这节课我们只是对正则表达的基础语法做了个了解,正则表达式真正的魅力在Pattern = "……",引号中的表达式,后面的课程中我们会体会到它的强大之处。

    本节的分享就到这里,鹏哥祝大家每天都有进步。

    聚米为谷

    博学宏才

    如果对VBA感兴趣

    手机端请扫描

    aa86d8425d0c73bebee83243d1d2ec8d.png

    电脑端请登录

    www.mihong.top

    找到《带你走进VBA的世界》

    跟着我一步步学习VBA

    本节的分享就到这里,鹏哥祝大家每天都有进步。5eb818f6b0fa52147201d77a4930e08c.gif您点的每个赞,我都认真当成了喜欢
    展开全文
  • 正则表达式的基本概念及用途了解之后,我们就来学习下具体语法,先以一个简单例子来了解。基础语法:比如,A1单元格中有一串字符:aabbccddaabbcc,我们要把其中a找到,然后替换成o。代码如下:Sub test()Dim ...

    我的目标:让中国的大学生走出校门的那一刻就已经具备这些Office技能,让职场人士能高效使用Office为其服务。支持鹏哥,也为自己加油!

    正则表达式的基本概念及用途了解之后,我们就来学习下具体的语法,先以一个简单的例子来了解。

    基础语法:

    比如,A1单元格中有一串字符:aabbccddaabbcc,我们要把其中的a找到,然后替换成o。

    代码如下:

    Sub test()

    Dim regx As Object, t$, k, s, n

    t = "aabbccddaabbcc"

    Set regx = CreateObject("vbscript.regexp")'引用正则表达式

    regx.Global = True '查找范围,true为全部查找,false只查找第一个,默认是false。

    regx.Pattern = "a" '引号里书写正则表达式,这里要查找a,就直接写个a

    Set k = regx.Execute(t) 'Execute方法的结果为一个对象,返回匹配成功的结果。

    For Each s In k '通过循环K可以得到该对象中的每个元素。

    MsgBox s

    Next

    n = regx.Replace(t, "o") '将匹配成功的结果做替换

    MsgBox n

    End Sub

    上面的代码后面都有注释,首先要引用正则表达式,前期绑定也可以,直接创建也可以,然后要对regexp的两个属性做出指定。

    Global属性,指查找范围,true为全部查找,false只查找第一个,如果上面案例中其属性改为false,那么只要该字符串中查找第一个a。

    Pattern属性,指的是正则表达式。

    下面讲下正则表达式的两个方法:

    Execute方法返回匹配成功的结果,是一个对象,通过for each 可以循环其中的值。

    Replace方法将匹配的结果做替换,regx.Replace(t, "o"),t为原字符串,第二个参数为要替换为的结果。

    普通字符的替换:

    了解了基础的语法之后,我们来看下如何用正则对普通的字符做替换。

    9314ff0cb24821343f5f92e0ec0fb5a1.gif

    如上例中,把A列部门中的门字去掉。

    思路:

    对A列部门循环,循环出来的值用正则表达式匹配门字,并把匹配的结果替换成空。

    代码如下:

    Sub test1()

    Dim regx As Object, rng1 As Range

    Set regx = CreateObject("vbscript.regexp")

    With regx

        .Global = True

        .Pattern = "门"

    End With

    For Each rng1 In Range("a2:a11")

         rng1(1, 2).Value = regx.Replace(rng1.Value, "")

    Next

    End Sub

    这里注意regexp的两个属性可以用with语法来书写,这样显得简洁明了。当然这节课我们只是对正则表达的基础语法做了个了解,正则表达式真正的魅力在Pattern = "……",引号中的表达式,后面的课程中我们会体会到它的强大之处。

    本节的分享就到这里,鹏哥祝大家每天都有进步。

    加入米宏Office培训群,每天进步一点点!

    从基础操作到VBA,

    两杯咖啡的钱,

    换取一份如此详细的Excel视频资料,

    你还在犹豫?

    欲购从速,联系微信号:527240310

    每天进步一点,每天提升一点!

    展开全文
  • 前面章节我们见识了正则表达式中元字符强大,但有时候我们想要匹配字符串有长度要求,正则表达式量词就是专门为解决这个问题而生。正则表达式量词如下:? 匹配前面表达式零次或一次。+ 匹配...
  • 昨天我们已经讲过了正则表达式分组和不分组情况下匹配结果区别,今天我们再对分组后一些属性进行研究。还是昨天案例:我们看下本地窗口:mat集合下面有count、item、value三个属性。同样,submatches集合...
  • 目标:让中国大学...上一节中我们讲过了正则表达式的基础语法,举了一个例子,把A列数据各个部门中门字去掉,当时写代码中有一段:Set regx = CreateObject("vbscript.regexp")With regx .Global = True ...
  • VBA中并没有直接提供正文表达式对象,需要借助VBScript正则对象。如果使用前期绑定,那么就需要在VBE中引用如下扩展库:也可以使用后期绑定方式创建正则对象,代码如下。Set objRegEx = CreateObject("vbscript....
  • 目标:让中国大学生走出校门那一刻就已经具备这些Office技能,让职场人士能高效使用Office为其服务。支持鹏哥,也为自己加油!我们来看看下面案例:上图中要求把A列数据中学号和姓名拆分开来,通过前面几...
  • VBA正则表达式的语法与其他语言(如Python)中使用的语法有较大的区别,主要是因为VBA的RegEx对象带有可选参数,因此有时必须指定这些参数以获得与在其他语言中使用标准的正则表达式语法相同的结果。VBA正则表达式语法...
  • 目标:让中国大学生走出校门那一刻就已经具备这些Office...在正则表达式中确定开始位置字符或者其类型要用脱字符“^”,确定结束位置字符或者其类型要用“$”。比如下面例子:对A列数据进行筛选。一、以...
  • 目标:让中国大学生走出校门那一刻就已经具备这些office技能,让职场人士能高效使用office为其服务。支持我,也为自己加油!我们来看看下面案例:上图中要求把A列数据中学号和姓名拆分开来,通过前面几节...
  • VB/VBA 正则表达式的使用方法

    千次阅读 2017-08-30 17:17:42
    VBA正则表达式使用Sub RegularTest() Dim s As String s = "12asd34" Dim myRegExp As Object Dim mMatches As Object Dim mMatch As Object sumValueInText = 0 Set mRegExp = CreateObject(
  • 目标:让中国大学生走出校门那一刻就已经具备这些Office技能,让职场人士能高效使用Office为其服务。支持鹏哥,也为自己加油!先来看一个案例:如上图:序号和后面标题写在了一起,有序号是一位数字,有...
  • EXCEL VBA 正则表达式 从实例开始 所有代码都测试过 ' ' '[2011-09-09 '[2010-08-08 ' 数据验证经常出现情况是需要验证和处理大量文本 内容 有时候需要查找字符串 有时候要按条件替换 并且这些待处理问题还是...
  • vba 正则表达式

    2018-04-23 09:40:21
    群友分享,内容解释非常清楚Sub RegTest() Dim oRegExp As Object '定义正则表达式对象 Dim oMatches As Object '定义匹配字符串集合对象 Dim str As String '定义要执行正则查找文本变量 str = "...
  • VBA 正则表达式

    千次阅读 2013-11-20 22:50:10
    ①正则表达式的概述  正则表达式原本是形式语言理论中概念,与编译器构造有密切联系。但是作为一个应用软件用户,我们没有必要去细究正则表达式的严格定义和处理方法。本文将从实用角度出发,阐述引入...
  • VBA中使用正则表达式,因为正则表达式不是vba自有对象, 故此要用它就必须采用两种方式引用它:一种是前期绑定,另外一种是后期绑定。前期绑定:就是手工勾选工具/引用中Microsoft VBScript Regular ...
  • 支持win10,没有替换功能,可以替代vba进行测试工具
  • VBA正则表达式入门与提高

    万次阅读 多人点赞 2019-05-10 11:30:37
    其中很多晦涩难懂内容在VBA中用不上或者对你来说根本无用,而初学者你却根本不知道怎样取舍.事实上,本人还没有发现一本针对VBA平台正则专业书籍.网络可见到少量VBA正则教程,但内容多是”点到为止”. ...
  • 正在看蓝桥玄霜版主字典帖,选了其中两个例子(附件中例A和例B),你看到第一反应是用字典去解决,例A和例B使用正则表达式也很好解决了问题。(给出这两个例子不是说正则表达式比字典好,只是借此体会正则...
  • 先上代码: Function GetStr(ByVal rng As ... '第三个参数i 为正则表达式成功匹配结果列表中第几个,从0开始,默认为0即第1个 '第四个参数s 为文本[True]或数字[False],用于剔除数字中文本内容,默认...
  • VBA正则表达式的语法与其他语言(如Python)中使用的语法有较大的区别,主要是因为VBA的RegEx对象带有可选参数,因此有时必须指定这些参数以获得与在其他语言中使用标准的正则表达式语法相同的结果。VBA正则表达式语法...
  • 如下图所示,数据保存在F列,需要在每个单元格引用之前添加A列指定工作表名称+!,结果如H列所示。需要注意是,对于F16中公式,由于I49已经指定工作表,所以此单元格不需要再处理,核心问题是如何定位单元格...
  • EXCEL VBA 正则表达式

    万次阅读 2017-07-06 16:15:09
    [2011-09-09:http://www.cnblogs.com/dxy1982/archive/2011/09/09/2159246.html] ... 数据验证经常出现情况是,需要验证和处理大量文本内容,有时候需要查找字符串,有时候要按条件替换,并且这些待处理问题
  • EXCEL VBA 正则表达式 MatchCollection对象

    千次阅读 2016-12-03 23:07:55
     正则表达式是通用文本搜索和处理方案,它知识不是VBA独有,基本上每种语言都内置了正则表达式的功能。正则表达式的基础知识不是这里重点,需要朋友可以Google一下,或者参看下面一些入门教程: ...
  • Excel-VBA正则表达式提取文本案例

    千次阅读 2019-10-02 23:47:44
    然而之前没学VBA正则表达式语法,因此就去网上搜了一下,结果发现根本不能运行。几经辗转,总算搞定,因此总结一下,供后来者参考。  有几点说明:  1、我是先在 Python中验证了正则表达式再copy到VBA中应用...
  • 留言板:今日是双十一,下述教程中的第二套“数据库”和第三套“字典”是优惠的最后一天,如有需要的朋友还请尽快,另外在此期间,我还准备了11份资料大礼,送给确实需要想学习VBA的同路人;视频由于还没有正式推出...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 506
精华内容 202
关键字:

vba的表达式