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

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

正则表达式(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 ObjectDim Result As Stringk = 0Set regEx = CreateObject("VBScript.RegExp")With regEx.Global = True.Pattern = "\d+"  '匹配一个及以上连续数字,那就是所有数字End WithSet Matches = regEx.Execute(str)   '进行匹配,匹配结果存到MatchesFor i = 0 To Matches.Count - 1     '循环,根据参数取得匹配结果If MatchType = 0 ThenResult = Result & Matches.Item(i).ValueElseIf MatchLen = 0 ThenIf i = MatchType - 1 ThenResult = Matches.Item(i).ValueExit ForEnd IfElseIf Len(Matches.Item(i).Value) = MatchLen Thenk = k + 1End IfIf MatchType = k ThenResult = Matches.Item(i).ValueExit ForEnd IfEnd IfEnd IfNextGetNum = Result
End Function

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

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


http://www.mrgr.cn/news/15459.html

相关文章:

  • Java和C#哪个更适合大型项目?
  • 自建远程桌面RustDesk服务器(CentOS配置,保姆级案例)
  • 代码搭建应用zion
  • 第三讲__简答题
  • Furion项目的单元测试
  • 数字文创产业:用科技讲述文化故事的新方式
  • Kafka3.x 使用 KRaft 模式部署 不依赖 ZooKeeper
  • 笔记整理—什么是uboot内核
  • 三耐环保家族控股99.17%:分红6000多万再补流,董事长董秘一年3次被警示
  • Thread.join()
  • 《机器学习》 贝叶斯分类器 原理、参数讲解及代码演示
  • CANoe入门(三) :CANoe全仿真阶段,模拟数据和信号
  • assert()在solidity的运用,模糊测试案例
  • Chainlit接入FastGpt接口完美对接,实现全新的用户聊天界面
  • Spring框架中PathMatchingResourcePatternResolver解析资源路径并匹配资源模式
  • SQL 对版本进行排序遇到的问题
  • 构建高可用性Nginx:配置策略与最佳实践
  • java中的Opencv:Opencv简介与开发环境部署
  • pnpm国内源设置
  • Nginx负载均衡中的连接超时处理:策略与配置