当前位置: 首页 > article >正文

Excel:vba实现正则匹配

一、匹配数字


实现的效果:(点击右边“提取数字”按钮)

实现的代码:

Sub 提取数字()
Dim cell As Range
Dim sj As Object
Dim regx As Object
Dim ss As Object
Dim n As Integer

'创建了一个 VBScript 正则表达式对象 regx,用于匹配特定模式的字符串
Set regx = CreateObject("vbscript.regexp")
'设置正则表达式属性
With regx
    .Global = True  '表示正则表达式会在字符串中查找所有匹配项,而不仅仅是一个匹配项
    .Pattern = "\d+" '定义了正则表达式模式 \d+,用于匹配一个或多个数字字符
    For Each cell In Range("a2", Cells(Rows.Count, 1).End(xlUp))
        '对当前单元格内容进行正则表达式匹配,并将所有匹配结果存入 sj 集合中
        Set sj = .Execute(cell)
        For Each ss In sj
            '每找到一个匹配项,就将 n 递增 1,用于确定数据写入的位置
            n = n + 1
            '将匹配的数字写入当前行中的下一个单元格.Offset(0, n)指定了写入的位置:与 ss 单元格在同一行,向右偏移 n 列
            cell.Offset(0, n) = ss
        Next ss
        '在处理完当前单元格后,将 n 重置为 0,以便在下一行重新开始
        n = 0
    Next cell
End With
End Sub

 二、匹配字母+数字

 
实现的效果:

实现的代码:

Sub 项目编号()
Dim cell As Range
Dim sj As Object
Dim regx As Object
Dim ss As Object
Dim n As Integer

Set regx = CreateObject("vbscript.regexp")
With regx
    .Global = True
    '[a-zA-Z]+\d+,用于匹配一个或多个英文字母后面紧跟一个或多个数字的字符串(如:abc123)
    .Pattern = "[a-zA-Z]+\d+"
    For Each cell In Range("a2", Cells(Rows.Count, 1).End(xlUp))
    Set sj = .Execute(cell)
        For Each ss In sj
            cell.Offset(0, 1) = ss
            '将匹配的结果替换成空(:将cell中的匹配部分去掉,保留剩余的内容,并将其写入相应单元格)
            cell.Offset(0, 2) = .Replace(cell, "")
        Next ss
    Next cell
End With
End Sub

三、两个代码区别就是.Pattern里面的内容(和你想要匹配的有关)


http://www.kler.cn/a/386919.html

相关文章:

  • 51c视觉~合集6
  • 5G 现网信令参数学习(3) - RrcSetup(1)
  • 【go从零单排】Rate Limiting限流
  • 如何在 Ubuntu 16.04 上设置 NFS 挂载
  • Vue3入门介绍及快速上手
  • 万字长文解读深度学习——卷积神经网络CNN
  • 【Linux】Ansible集中化运维工具(详解)安装、常用模块、playbook脚本
  • MQTT协议解析 : 物联网领域的最佳选择
  • 浏览器是如何渲染页面的? - 2024最新版前端秋招面试短期突击面试题
  • Git遇到“fatal: bad object refs/heads/master - 副本”问题的解决办法
  • 【Webpack配置全解析】打造你的专属构建流程️(1-4)
  • DBeaver工具连接Hive
  • 冒泡选择法(c基础)
  • 【.NET 8 实战--孢子记账--从单体到微服务】--简易权限--角色可访问接口管理
  • 探索 Python 的新边疆:sh 库的革命性功能
  • AWTK fscript 中的 JSON 扩展函数
  • Spark 的介绍与搭建:从理论到实践
  • Java命名规范
  • (2024.11.5)亚博树莓派5部署yolov8目标检测
  • Jmeter的安装,设置中文,解决乱码问题
  • A021基于Spring Boot的自习室管理和预约系统设计与实现
  • 前端实现数据下载为json文件
  • 【Lucene】什么是全文检索?解读结构化数据与非结构化数据
  • 从pg_depend和pg_class开始了解MogDB/openGauss/postgresql的系统元数据设计
  • Pytest-Bdd-Playwright 系列教程(7):使用测试代码生成辅助工具
  • 【人工智能-初级】练习题:利用Scikit-learn实现K-Means聚类算法的案例