ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 批量多字符串多次替换

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-1-10 14:03 | 显示全部楼层
淘朴 发表于 2019-1-10 13:54
“正则表达式”替换工具

这个工具,在Excel中默认没有,请问下,是第3方加载项,还是怎么开启这个功 ...

这个是我做的免费工具,到我发表的主题帖子里去下载。
开启方法,与普通的加载宏一样(菜单或工具栏的按钮,需要自己添加)。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-10 14:04 | 显示全部楼层

您求解的结果,是对的。  Excel必备工具箱,这个第三方工具,要付费,且兼容性不太好,很早就知道这个工具,却没用过,谢谢

TA的精华主题

TA的得分主题

发表于 2019-1-10 14:21 | 显示全部楼层
淘朴 发表于 2019-1-10 14:04
您求解的结果,是对的。  Excel必备工具箱,这个第三方工具,要付费,且兼容性不太好,很早就知道这个工 ...

使用工具软件,可以解决你的办公难题,或者提高你的工作效率,节约你的时间,为此付费还是值得的。
至少,比去给女主播刷礼物有意义

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-10 14:37 | 显示全部楼层
ggmmlol 发表于 2019-1-10 14:21
使用工具软件,可以解决你的办公难题,或者提高你的工作效率,节约你的时间,为此付费还是值得的。
至少 ...

谢谢提醒,主要是有几次安装这个第三方工具,没用成功

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-10 15:52 | 显示全部楼层
飞天篮球猪 发表于 2019-1-10 12:37
可以试试Power Query。几万行数据,几秒之内能解决,效率还算可以。
表1是数据源表右侧的对照列,是经过去 ...

根据你的方法,记录出执行教程,再次感谢
批量多字符串多次替换—Power Query解法.jpg

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-1-10 16:18 | 显示全部楼层
淘朴 发表于 2019-1-10 15:52
根据你的方法,记录出执行教程,再次感谢

不客气,能用就行。
多说几句,那个替换字符映射表要经常维护,没有映射关系的就不会被替换。有没有重复都没事,因为在M语句里用了Table.Distinct去除重复,用来避免List.ReplaceMatchingItems键值对有冲突时运行错误。我测试的时候,效率还能接受,几万行数据几秒就能加载到Excel表,所以也算是一种方法。
Anyway.....Stay Query,Stay Magic!.....lol...

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-10 18:22 | 显示全部楼层
飞天篮球猪 发表于 2019-1-10 16:18
不客气,能用就行。
多说几句,那个替换字符映射表要经常维护,没有映射关系的就不会被替换。有没有重复 ...


在Power Query中,有一些字符串,对应替换不掉,经目测检验如下:

"
"
'
&
<
>
|
?
,



替换的数据,虽不重,但却存在包含关系,这可能是导致出现问题的原因。另一种原因可能跟表格安全性相关,“|  ?”这2个字符通配符及逻辑运算符。

在提问时,考虑到数据重与包含性的问题,替换的数据E列,根据字符串由长到短进行了排序,如果是按替换的数据区域的次序进行替换,这种逻辑问题是可以排开。

能否请完善一下Power Query中语句,让替换的数据在“去重后,且按字符串由长到短”,这样的次序去完整的替换数据。这样完善后,PQ的语句解决问题的完善度更强。这个通用问题,解决了论坛好友共享算法乐趣

TA的精华主题

TA的得分主题

发表于 2019-1-10 19:16 | 显示全部楼层
淘朴 发表于 2019-1-10 18:22
在Power Query中,有一些字符串,对应替换不掉,经目测检验如下:

"

处理文本信息,还是正则表达式是最专业。
就像我之前给出的正则表达式来处理你这个问题,就连对照表都省了。

并非我想把我的“超级查找替换”加载宏与PQ来对比。但是,在BI信息处理系统里面,最专业的方法就是先用正则表达式工具对原始数据进行“精炼”提取,使之规范化、表格化,然后以数据库的SQL技术进行分析汇总。而EXCEL的PQ工具却没有直接的正则替换、正则分列函数,只能通过其Web.Page函数方法间接引用JS等脚本语言的正则表达式引擎,实在是很遗憾的事情。同时,也是很令人费解的事情——引入正则表达式函数,对于PQ这样的BI分析系统来说,应当是轻而易举的,我自制的小工具都能够非常简单地实现正则表达式函数,而它却不提供。只有一个理由可以解释EXCEL中的阉割版PQ,那就是为了保住专业版的性能优势以逐利,同时以EXCEL中的免费版来提高市场占有率、吸引潜在的专业用户;如果大部分人都掌握了正则表达式和SQL技术,那么,专业的BI软件也将走下神坛,变得泯然众人

TA的精华主题

TA的得分主题

发表于 2019-1-10 19:17 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
淘朴 发表于 2019-1-10 18:22
在Power Query中,有一些字符串,对应替换不掉,经目测检验如下:

"

可以,换个写法就可以。我先测试一下。可能效率上会有影响。

TA的精华主题

TA的得分主题

发表于 2019-1-10 20:05 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
淘朴 发表于 2019-1-10 18:22
在Power Query中,有一些字符串,对应替换不掉,经目测检验如下:

"

下午的那个方法欠考虑,你可以忽略掉,不要用了。有点不好意思,浪费时间了。
当然,List.ReplaceMatchingItems在有些场景还是能起到很好的作用的。如果你对M函数有兴趣,可以试着学习一下。
以下M语句请你测试,我用了迭代处理,效率也可以,几万行几乎是秒出。你测试一下,看看是否有欠妥当的地方。
一并附上文件,A列是你的原始数据,替换表在最右侧,我在M语句里做了按照字符长度降序排列,
所以在维护的时候不需要再去排序了。结果我没有加载到表,文件超过了3M,里边的代码你应该知道怎么查看。
  1. let
  2.    替换表 = Table.Buffer(Table.Sort(Excel.CurrentWorkbook(){[Name="表1"]}[Content],{each Text.Length([列1]),1})),

  3.    源数据 = Excel.CurrentWorkbook(){[Name="表2"]}[Content],

  4.      结果 = Table.TransformColumns( 源数据,{},each List.Accumulate( List.Buffer(Table.ToRows(替换表)),
  5.                                                                    _,
  6.                                                                   (s,c)=>Text.Replace(s,c{0},c{1})))
  7. in
  8.      结果
复制代码
批量多字符串多次替换.xlsx.zip (1.52 MB, 下载次数: 56)

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-9-28 05:32 , Processed in 0.035023 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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