VBA学习(67):Excel VBA 提取数字/自定义工作表函数/正则表达式/批量提取电话号码

news2024/9/29 1:17:51

正则表达式(Regular Expression),又称为“正则式”、“规则表达式”、“常规表示法”,是一种用来匹配、查找、替换字符串的工具。它通过一定的符号、元字符和操作符的组合来表达一个特定的模式,从而匹配符合该模式的字符串。关于正则表达式的基本使用方法我们放在第二条文章。

今天我们分享的是一个提取0-9数字的自定义函数GetNum,在工作表、VBA中均可使用。

图片

函数使用:

1、A列我用mid函数、randbetween函数等模拟了一些文本与数字混合的字符串。

2、B列是以前的一个函数,可能是网上抄来的,记不清了。不管它,留着吧。

3、C列用GetNum函数,取A列字符串中的数字,不带参数,表示提取所有数字。

4、D列用GetNum函数,取A列字符串中的数字,第一个参数表示取第几个匹配结果,第二个参数表示连续数字的长度,联合起来表示符合指定长度的第几个数字。如果第二个参数省略,则表示匹配第几个数字,不管长度。

5、E列、F列同样用法。F列提取了第1个11位的连续数字,我们可以用来提取电话号码。

函数代码:

Function GetNum(str As String, Optional MatchType As Integer = 0, Optional MatchLen As Integer = 0)
    '函数参数2个,默认为0,表示提取所有数字,
    'MatchType,匹配类型,如果为0,表示提取所有数字,忽略第二参数,如果不为0,表示匹配第n个符合条件的元素
    'MatchLen,匹配长度,指定提取的连续数字的长度,如果0,表示任意长度,不为0,则提取参数值长度的连续数字
    '设第一参数=m,第二参数=n,如果m,n同时不为0,则表示提取第m个长度为n的连续数字。
    Dim regEx As Object
    Dim Result As String
    k = 0
    Set regEx = CreateObject("VBScript.RegExp")
    With regEx
        .Global = True
        .Pattern = "\d+"  '匹配一个及以上连续数字,那就是所有数字
    End With
    Set Matches = regEx.Execute(str)   '进行匹配,匹配结果存到Matches
    For i = 0 To Matches.Count - 1     '循环,根据参数取得匹配结果
        If MatchType = 0 Then
            Result = Result & Matches.Item(i).Value
        Else
            If MatchLen = 0 Then
                If i = MatchType - 1 Then
                    Result = Matches.Item(i).Value
                    Exit For
                End If
            Else
                
                If Len(Matches.Item(i).Value) = MatchLen Then
                    k = k + 1
                End If
                If MatchType = k Then
                    Result = Matches.Item(i).Value
                    Exit For
                End If
            End If
        End If
    Next
    GetNum = Result
End Function

代码解释参见代码注释吧。

 技术交流,软件开发,欢迎微信沟通:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2088202.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

opencv实战项目十八:Gabor滤波器提取布料纹理

文章目录 前言一、Gabor简介二、cv2.getGaborKernel()三,效果: 前言 在计算机视觉和图像处理领域,纹理分析一直是一个热门且富有挑战性的话题。纹理,作为图像中的一种重要视觉特征,不仅承载着丰…

关于BitConverter.GetBytes取得的值是反的问题

通过百度查询450000转16进制,我们得到的值是6DDD0, 在前面补零之后的值应该是0006DDD0。如下图所示。 实际上我们用BitConverter.GetBytes 方法转换450000为byte[] 的时候, 转换后的值用16进制显示为D0DD0600(因为我这里是一个通讯协议的数据传输前转换&…

回归预测 | Matlab实现GWO-BP-Adaboost灰狼算法优化BP神经网络集成学习多输入单输出回归预测

回归预测 | Matlab实现GWO-BP-Adaboost灰狼算法优化BP神经网络集成学习多输入单输出回归预测 目录 回归预测 | Matlab实现GWO-BP-Adaboost灰狼算法优化BP神经网络集成学习多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现GWO-BP-Adaboost灰…

GMS——利用 ChatGPT 和扩散模型进行制造业革命

概述 论文地址:https://arxiv.org/abs/2405.00958 研究介绍了生成式制造系统(GMS),并表明这些系统能有效管理和协调自主制造资产,提高它们对不同生产目标和人类偏好的响应能力和灵活性。 与传统的显式建模不同&#…

嵌入式Linux学习笔记-Linux基础操作

一、Linux 目录结构 二、文件基础操作 Linux 命令一般由三部分组成,命令 选项 参数。 1、pwd:列出当前所在路径 pwd //列出当前所在目录 2、cd:切换路径 cd /home/boot //切换路径为/home/boot cd .. //返回上一级目录…

鸿蒙(API 12 Beta3版)【自定义界面扫码】

基本概念 自定义界面扫码能力提供了相机流控制接口,可根据自身需求自定义扫码界面,适用于对扫码界面有定制化需求的应用开发。 说明 通过自定义页面扫码可以实现应用内的扫码功能,为了应用更好的体验,推荐同时[接入“扫码直达”…

海信电视与《黑神话 :悟空》合作,大屏端流畅游戏体验如何保障?

上线即巅峰 国产3A游戏引发热潮 近期,首款国产3A游戏《黑神话:悟空》自上线以来,便迅速在各大游戏平台占据热销榜首,其销量及在线人数均刷新历史记录。同时,该游戏在各大社交媒体中也拥有超高讨论度,其精湛…

在Ubuntu24.04上安装多主多从的高可用Kubernetes节点

前言 因为镜像拉取失败,所以好多小伙伴说calico网络插件安装失败。之前写过CentOS7上安装多主节点的Kubernets集群,而CentOS7又停止维护了。所以借着在Ubuntu上安装多主的Kubernetes集群的机会,使用国内镜像安装calico网络插件。 视频教程地…

Git实现代码托管

在电脑端下载git:Git - 安装 Git (git-scm.com) 点击继续下载:一直next即可 下载完毕 winR:cmd 输入:git 不报错即可 登录 gitee账号,根据教程完成内容即可创建成功 !!一定要先登录邮箱账号…

深度学习环境安装与验证指南

目录 1. 项目背景 2. 系统与软件版本 2.1 操作系统与硬件 2.2 软件版本 2.3对应版本 3. 环境配置步骤 3.1 安装 Anaconda 3.2 创建虚拟环境 3.3 安装 CUDA 和 cuDNN 3.3.1 安装 CUDA 11.8 3.3.2 安装 cuDNN 8.6 3.3.3 验证 CUDA 和 cuDNN 安装 3.4 安装 TensorFlo…

国产网卡品牌崛起,做好网络信息安全的“守门人”

在信息技术日新月异的时代背景下,信息安全不仅关乎个人隐私保护,更是国家安全与经济发展的基石。LR-LINK联瑞凭借其前瞻性的视野和深厚的研发实力,成功自主研发出全国产化的FPGA(现场可编程门阵列)网闸隔离卡方案&…

企业园区智慧升级:电子墨水屏标签打造环保高科技工作空间

“双碳”目标和“数字中国”建设推动企业绿色转型。企业园区作为城市数字化的重要组成部分,传统纸质显示方式已不适应数字化转型的需求。墨水屏技术凭借低功耗和信息便捷更新的优势,成为园区数智显示的新方案,助力绿色数字化转型,…

网络科学导论,网络同步与控制

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

swf怎么转换成mp4格式?视频格式转换,就看这2个办法

许多用户在处理多媒体文件时经常遇到的问题swf文件的转换问题。swf文件作为Flash动画的标准格式,曾经在网页设计和互动媒体中占据重要地位。然而,随着技术的发展和Flash的逐渐淘汰,越来越多的用户需要将swf文件转换为更通用的视频格式&#x…

视频中间件:与海康ISC平台级联

视频中间件是一款对各种视频流的接入处理并能通过标准H5接口输出的安防视频管理软件。其设备兼容性、并发性能、接口输出等方面表现突出,方便了行业跨平台、跨系统的第三方系统和应用对接。在很多的应用场景中,不仅仅是提供标准H5接口与其业务系统的互联…

详细解说数据库课程设计mysql

数据库课程设计中,MySQL是一个非常重要的工具,它是一种关系型数据库管理系统(RDBMS),广泛应用于各种规模的项目中。下面,我将详细解说在数据库课程设计中如何使用MySQL进行设计。 1. 理解数据库设计的基本…

STM32f103(固件库)

1.工程创建 新建STM32工程 步骤一:创建工程模板文件1.新建一个文件夹 template 2.在文件夹template里面新建六个文件(1)CMSIS: 存放内核驱动程序和启动引导文件(2)FWLIB:存放库函数文件&#…

使用twilio向手机发短信做监控报警

最近遇到个需求,就是夜班HW希望有个监控系统指标,如果异常就向监控人手机打电话的需求。在考察以后,发现目前由于国内防电信诈骗的原因,所以想要使用云通讯功能必须由企业去申请,但作为一个个人的监控项目来说太大了。…

【MySQL 15】使用 C/C++ 连接数据库

文章目录 🌈 一、引入 MySQL 库⭐ 1. 下载库文件⭐ 2. 上传库文件⭐ 3. 引用库文件⭐ 4. 验证是否引入成功 🌈二、MySQL 接口介绍⭐ 1. 初始化⭐2. 连接数据库⭐ 3. 关闭数据库连接⭐ 4. 设置编码格式⭐ 5. 发送 sql 指令🌙 5.1 向数据库表中…

Ant Design vue 多层for循环form表单自定义校验

数据结构如下&#xff1a;三维数组。 注意&#xff1a;<a-form-model>一定得写在for外面&#xff01;&#xff01;&#xff01;&#xff01; <!-- 弹出框 --> <a-modal:title"title":dialog-style"{ top: 20px }":visible"visible&quo…