ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: ntyyz

[求助] 请教提取的问题

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-15 20:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
獨一無2 发表于 2018-7-15 09:12
Sub 提取()
Dim result, regx, iLoop, re
    Sheet1.Cells(1, "C").Value = ""

谢谢,代码很好用,有个问题再请教下,以A1为列,每次更改其中的部份数据,或者粘贴用新的数据后,需要执行宏才能得到所需结果,可否我更改原始数据后,宏自动跟进进行更改。

TA的精华主题

TA的得分主题

发表于 2018-7-15 20:53 | 显示全部楼层
本帖最后由 獨一無2 于 2018-7-15 20:58 编辑

可以使用Worksheet_Change事件,判断如果是A1值有变化,则执行宏内的代码。Worksheet_Change为工作表事件
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target =Sheet1.Range("A1") Then
   
     Dim result, regx, iLoop, re
     Sheet1.Cells(1, "C").value = ""
     Set regx = CreateObject("vbscript.regexp")
     With regx
         .Global = True
         .Pattern = "([一-龢]+\d+\D?\d?)"
     Set result = .Execute(Sheet1.Cells(1, "A").value)
     
     For iLoop = 0 To result.Count - 1
         If "." = Right(result(iLoop).submatches(0), 1) Then
             Sheet1.Cells(1, "C").value = Sheet1.Cells(1, "C").value + result(iLoop).submatches(0) + "0"
         Else
             Sheet1.Cells(1, "C").value = Sheet1.Cells(1, "C").value + result(iLoop).submatches(0)
         End If
     Next iLoop
     End With
    End If
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-15 20:56 | 显示全部楼层

谢谢,代码很好用,你的代码直接得到最后的结果,有个问题再请教下,以A1为列,每次更改其中的部份数据,或者粘贴用新的数据后,需要执行宏才能得到所需结果,可否我更改原始数据后,宏自动跟进进行更改。安全性已设了低没用,因为每次粘贴新数据时不一定是我,别人可能不知道怎么操作,如能在每次更改粘贴时,所需数据也自动显示出来最好。

TA的精华主题

TA的得分主题

发表于 2018-7-15 21:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

大侠,有正则表达式的书或资料推荐下吗?

TA的精华主题

TA的得分主题

发表于 2018-7-15 21:03 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-7-15 21:14 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-7-15 21:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
jiminyanyan 发表于 2018-7-15 21:03
http://club.excelhome.net/forum.php?mod=viewthread&tid=1128647&page=1&authorid=2259283

这个帖子我啃了至少有10遍了,还是挺懵懂的。
这个正则,感觉好难

TA的精华主题

TA的得分主题

发表于 2018-7-15 21:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
tudarong 发表于 2018-7-15 21:26
这个帖子我啃了至少有10遍了,还是挺懵懂的。
这个正则,感觉好难

花点钱,花点时间,这比什么都快。
正则的对象并不复杂(方法就2个,属性也不多),也不是重点。
但是元字符想弄明白真心得下点功夫,毕竟正则表达式的灵魂在于元字符。

TA的精华主题

TA的得分主题

发表于 2018-7-15 21:34 | 显示全部楼层
tudarong 发表于 2018-7-15 21:26
这个帖子我啃了至少有10遍了,还是挺懵懂的。
这个正则,感觉好难

18楼老师说的有道理;
花点钱,花点时间,这比什么都快。

TA的精华主题

TA的得分主题

发表于 2018-7-15 22:01 | 显示全部楼层
活在理想的世界 发表于 2018-7-15 21:31
花点钱,花点时间,这比什么都快。
正则的对象并不复杂(方法就2个,属性也不多),也不是重点。
但是 ...

元字符确实得下功夫才行
明白了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-9 15:53 , Processed in 0.023716 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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