zoukankan      html  css  js  c++  java
  • 在excel用正则表达式匹配表中数据(VBA)

    对前一篇文章进行更新升级,有时候需要给正则表达式进行分类,当匹配到某个正则表达式时,则在相应的位置展示出该正在表达式属于哪一类,这样的话,我们就可以很方面的对自己所要处理的很多数据进行分类了

    实现上面功能,可以在sheet2中的B列加上对应的正则表达式属于哪一类

    sheet1中A列数据与上一篇文章一样

     运行下面代码,则出现了想要的效果如下:

     然后修改相应的代码如下:

    Sub Test()
    atr = Worksheets("Sheet1").Range("a65536").End(xlUp).Row
    btr = Worksheets("Sheet2").Range("a65536").End(xlUp).Row
    btr2 = Worksheets("Sheet2").Range("b65536").End(xlUp).Row

    a = Worksheets("Sheet1").Range("a1:a" & atr).Value
    b = Worksheets("Sheet2").Range("a1:a" & btr).Value
    b2 = Worksheets("Sheet2").Range("b1:b" & btr2).Value

    ReDim c(1 To atr, 1 To 1)
    Set reg = CreateObject("vbscript.regexp")
    With reg
    .Global = True
    .IgnoreCase = True
    For ar = 1 To atr
    For br = 1 To btr
    If btr = 1 Then
    .Pattern = b
    Else
    .Pattern = b(br, 1)
    End If
    If .Test(a(ar, 1)) Then
    c(ar, 1) = b2(br, 1)
    Exit For
    End If
    Next
    Next
    End With
    Range("c1:c" & atr) = c
    Set reg = Nothing
    End Sub

    这种方法可以基本解决我们日常工作所遇到的问题,但是还需要完善,比如,当一个数据同时满足几个正则表达式,通过本例中的代码,结果只会得到第一次匹配的类,显然,对于有些要求苛刻的需求,这种匹配结果是不够的。 笔者也在想办法去解决这个不足,同时希望集思广益,大家能够多多提供意见。

  • 相关阅读:
    启用数据库 aspnetstate 会话状态
    窗体设计器
    玩转hyper-v
    PDF,IMAGE,HTML,WORD,EXCEL 互操作
    在线浏览office 文件
    使用c#操作txt
    C#里调用 MysqlDB
    c#控件攻略宝典之ListBox控件
    c# word文档与二进制数据的相互转换
    C#对话框的使用
  • 原文地址:https://www.cnblogs.com/yorke/p/6178236.html
Copyright © 2011-2022 走看看