吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3281|回复: 13
收起左侧

[其他转载] 利用VBA自定义函数提取指定的文本信息

[复制链接]
ilpj 发表于 2021-8-11 22:54
[Visual Basic] 纯文本查看 复制代码
Function gettext(rng, sg As Integer) As String
      Dim obj As Object, txt, mx
      Set obj = CreateObject("VBSCRIPT.REGEXP")
        With obj
            .Global = True
            Select Case sg '类型用数字方便在excel中用公式取值
            Case 1 '去汉字
              .Pattern = "[一-﨩]"
              gettext = .Replace(rng, "")
            Case 2 '去字母
              .Pattern = "[a-zA-Z]"
              gettext = .Replace(rng, "")
            Case 3   '去数字
              .Pattern = "[0-9]"
              gettext = .Replace(rng, "")
            Case 4    '取汉字
               .Pattern = "[^一-﨩]"
               gettext = .Replace(rng, "")
            Case 5   '取字母
              .Pattern = "[^a-zA-Z]"
              gettext = .Replace(rng, "")
            Case 6     '取数字
              .Pattern = "[^0-9]"
               gettext = .Replace(rng, "")
            Case 7 '取以字母或数字开头和结尾的字符串
            .Pattern = "\w.*\w"
              Set txt = .Execute(rng.Value)
               For Each mx In txt
                      gettext = gettext & mx
               Next
            End Select
        End With
End Function

最近遇到一个需求,需要提取excel数据中以数字或字母为开头和结尾的字符串,没找到现成的,遂参考网友的方法做了一个自定义函数,主要使用VBA的正则表达式匹配的,贴出来探讨下
提取文本.zip (14.91 KB, 下载次数: 87)

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
52pojielogo + 1 + 1 实际工作中常用有这样的情形,感谢楼主的分享!
miocaro507 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

cszcszv163 发表于 2021-8-14 10:40
我的也支持“中文式”表达式,不过我的思路是用两个数组去对应替换,这样代码里会少很多
Snipaste_2021-08-14_10-38-55.png
cszcszv163 发表于 2021-8-14 10:37
本帖最后由 cszcszv163 于 2021-8-14 10:47 编辑

继续加油,这是我自定义的增强版正则函数,接收9个参数(2个必选,7个可选):

CSZ_Regexp(单元格或选区, 查找表达式, Optional 替换内容 = "", Optional 提取模式 = 0, Optional 启用运算 = 0, Optional 显示格式 = "", Optional 循环匹配 = 0, Optional 子查找对象 = 0, Optional 子替换内容 = 0)

除了正则本身查找,替换功能(支持多种提取模式)。
另:
①运算功能,对找到的文本数值可以进行加减乘除、三角函数或其他函数的运算。(不限提取模式)
②子替换功能,如:可进一步把字符串中的多个字符替换成指定字符。(不限顺序)
③文本格式显示设置,比如查找后的日期格式,是可以直接在参数里设置的。
④循环匹配,对匹配到的文本还可以“递归式”进一步匹配,这在嵌套标签中很好用。
Snipaste_2021-08-14_10-33-31.png
Snipaste_2021-08-14_10-32-24.png
Snipaste_2021-08-14_10-36-02.png
lgh978 发表于 2021-8-12 07:31
miocaro507 发表于 2021-8-12 07:52
谢谢分享,挺不错的!
龍謹 发表于 2021-8-12 08:22
学习了,谢谢楼主!
gzh820101 发表于 2021-8-12 08:30
nice,暂时用不上,不过先收藏了
bachelor66 发表于 2021-8-12 08:48
先收藏,指不定哪天就用上了                                   
yang85vip 发表于 2021-8-12 12:41
感谢分享
衣征尘 发表于 2021-8-13 08:58
收藏了,说不定会用到
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 01:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表