ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 13316|回复: 12

[求助] vba字符串用replace模糊替换

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-12-29 11:18 | 显示全部楼层 |阅读模式
本帖最后由 人上+人 于 2017-12-30 11:07 编辑

字符串:如"很长很长其它的内容  登记日期:2017  年  12 月 28 日"
我要提取日期
x ="很长很长其它的内容  登记日期:2017  年  12 月 28 日"
x=Replace(x, "*始治日期", "")  (删除此行)
x=Replace(x, "*登记日期", "")
这儿无法使用*;如何用


vba字符串模糊替换.rar

7.37 KB, 下载次数: 24

TA的精华主题

TA的得分主题

发表于 2017-12-29 11:27 | 显示全部楼层
楼主按下f1,查下具体帮助,看看是否支持楼主的用法

TA的精华主题

TA的得分主题

发表于 2017-12-29 11:45 | 显示全部楼层
始治日期是什么东东                                                                                                         .

TA的精华主题

TA的得分主题

发表于 2017-12-29 12:00 | 显示全部楼层
  1. If x Like "*始治日期" Then x= Replace(x, "始治日期", "")
复制代码

TA的精华主题

TA的得分主题

发表于 2017-12-29 14:12 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2017-12-29 14:38 | 显示全部楼层
本帖最后由 dingboy_VBA 于 2017-12-29 15:01 编辑
  1. =REPLACE(A1,SEARCH("很长*内容",A1),SEARCH("登记日期",A1)-SEARCH("很长*内容",A1),"")
复制代码


Replace和Substitute都不支持通配符*,但是Search可以,因此,用Search的结果来指定位置,用Replace来进行替换就可以了.
更复杂的也更强大的可以运用正则表达式来处理.
  1. Function 提取日期(Rng As Range)
  2. 提取日期 = 提取内容("(\d+\s*年\s*\d+\s*月\s*\d+\s*日)", Rng.Text)
  3. End Function

  4. Function 提取内容(正则样式 As String, srcTxt As String, Optional NeededGroupIndex As Integer = 0) As String
  5.     Dim v
  6.     Set regex = CreateObject("Vbscript.Regexp")
  7.     With regex
  8.         .Global = True
  9.         .IgnoreCase = True
  10.         .MultiLine = True
  11.         .Pattern = 正则样式
  12.         Set v = .Execute(srcTxt)  'V的count对应匹配的处数,v(i)代表第i处匹配。v(i).submatches(j)代表匹配的第j-1个分组 。
  13.     End With
  14.     提取内容 = ""
  15.     If (v.Count = 0) Then
  16.         提取内容 = "#NOT FOUND#"
  17.         Exit Function
  18.     ElseIf (v.Count > 1) Then
  19.         提取内容 = "#TOO MANY MATCHES#"
  20.         Exit Function
  21.     Else
  22.         提取内容 = v(0).SubMatches(NeededGroupIndex)
  23.     End If
  24.     Set regex = Nothing
  25. End Function
复制代码


两种方式附件中都提供了,仅参考

vba字符串模糊替换.rar

9.72 KB, 下载次数: 50

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-12-30 11:12 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-12-30 11:22 | 显示全部楼层

4楼老师解答,,结果也只替换了"始治日期";
想要的结果是替换了"始治日期"前面所有字符

想简化处理,不希望6楼
Replace和Substitute都不支持通配符*,,

通配符*要求对象,不适用于字符串      叹息叹息叹息

TA的精华主题

TA的得分主题

发表于 2017-12-30 11:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. If x Like "*始治日期*" Then x= "始治日期" & Split(x, "始治日期")(1)
复制代码

TA的精华主题

TA的得分主题

发表于 2017-12-30 11:27 来自手机 | 显示全部楼层
人上+人 发表于 2017-12-30 11:22
4楼老师解答,,结果也只替换了"始治日期";
想要的结果是替换了"始治日期"前面所有字符


  叹息叹息叹息!!!!!!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-25 07:04 , Processed in 0.039585 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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