ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 文本批量替换

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-9-16 04:10 | 显示全部楼层 |阅读模式
我现在遇到一个很棘手的问题,需要将VBA代码中的LIKE语法转化为 INSTR()函数(因为后者查询效率比前者快得多)。但是因为这种代码行特别多上千行,没法一个个手动更改,所以我想怎么才能实现如下效果:
if  school like "*abc*" then weidu="A"                                               转化为:     if instr(1,school,"abc") then weidu="A"
if  course like "*ui*" and  classname  like "*abc*" then weidu="B"     转化为:     if  instr(1,course,"*ui*") and  instr(1,classname,"*abc*") then weidu="B"

其实规则就一个,就是怎么把凡是形如 A  LIKE "*B*"  字眼文本  变成 INSTR(1,A,B)   ?
我研究好久正则表达式,但是也只能做到提取形如A LIKE"*B*"  字眼这个样子,没法完成替换。


TA的精华主题

TA的得分主题

发表于 2018-9-16 09:21 | 显示全部楼层
可以考虑将代码导出以后转到WORD中替换,或者在VBA里编程读取代码用正则进行替换,后者可能要稍复杂一些,从来没有使用过,只是想像。

TA的精华主题

TA的得分主题

发表于 2018-9-16 13:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 duquancai 于 2018-9-16 14:10 编辑

既然你举了一个例子,下面代码也是 举个例子》》》》》》》》》》》》
  1. Sub main()
  2.     Dim s$, j$, D As Object, js As Object
  3.     s = "if course like ""*ui*"" and classname like ""*abc*"" then weidu=""B"""
  4.     Set D = CreateObject("htmlfile"): Set js = D.parentWindow
  5.     js.execScript "sr='" & s & "';r=/([a-z]+)\s+like\s+""\*([a-z]+)\*""/ig;"
  6.     j = "sr.replace(r,function(s,a,b){return 'InStr(1,'+a+',""'+b+'"")';});"
  7.     MsgBox js.eval(j)
  8. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-22 00:54 | 显示全部楼层
duquancai 发表于 2018-9-16 13:34
既然你举了一个例子,下面代码也是 举个例子》》》》》》》》》》》》

完美啊,这是什么语言的 正则表达式?没见过啊
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-16 00:48 , Processed in 0.019767 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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