ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] [加载宏]单元格小工具之六——超级查找替换

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2018-6-26 11:46 | 显示全部楼层 |阅读模式
本帖最后由 ggmmlol 于 2018-8-10 20:52 编辑

前言:
EXCEL有非常强大的常规数据处理功能,但对于文本类型数据的处理功能,则一直是它的弱项。
比如,EXCEL内置的【查找和替换】功能,由于只能使用“*”和“?”2种通配符,相对于WORD中的【查找和替换】功能可以使用多达20种以上的通配符,其功能受到很大限制。当需要对特定规则的字符串做查找、替换(保留)时,就捉襟见肘、显得有些鸡肋了。

举个常见的例子,HR工作人员经常需要把同一单元格中的手机号码、身份证号、邮政编码等分别查找并提取出来。而这是EXCEL内置的【查找和替换】功能所做不到的。

对于上述类似问题的处理办法,以往的常规做法是:把数据先复制到WORD(或其它支持“正则表达式”查找替换功能的文本编辑软件)中做处理,然后再复制回来。这样虽然也能够解决问题,但是需要在两个软件中来回地切换,不够方便简捷。

现在大家都在提倡“科技要以人为本”。所以,加强EXCEL的【查找和替换】功能就很有必要了,正因为如此,我的加载宏系列小工具——单元格小工具之六——【超级查找替换】—— 隆重出场了。

超级查找替换.rar (67.87 KB, 下载次数: 1041)


2018-8-10 更新:允许在“替换为”的复合框中,按Alt + Enter键以输入手动换行符chr(10)。这样,就可以把其它字符替换为手动换行符,也可以按条件增加手动换行符。
2018-8-4更新:1、优化程序效率;2、添加字符修剪选项;3、为“查找内容”和“替换为”两个复合框的下拉列表添加清除功能,方法是双击相应的标签。
2018-6-30 更新:增加强大的正则表达式助手
简要帮助:
1、首先,把本加载宏按常规方法进行加载。
2、本加载宏没有设计自动添加菜单和工具栏按钮,用户可以手动添加自定义按钮。(本人是在“快速访问工具栏”中为其添加的按钮。)
3、可以用快捷键Ctrl + Shift + H打开本工具。(提示:Excel内置的替换功能的快捷键是Ctrl + H
4、本工具的功能核心是正则表达式,所以要求用户掌握基本的正则表达式知识。






补充内容 (2018-8-21 14:42):
2018-8-21最新更新:本次更新的附件在7楼,已经“置顶”。
1、在查找内容的输入框下拉列表中,加入“万能正则表达式公式”及常用正则表达式。2、保存历史查找表达式,并可选择恢复到默认下拉列表清单。3、其它。

补充内容 (2018-11-14 17:49):
2018-11-12更新:本次更新添加了两项实用功能选项:1、可指定替换后保存结果到的目标区域,2、可预先转换目标区域的数值格式为文本或常规。

评分

7

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-12 13:07 | 显示全部楼层
本帖最后由 ggmmlol 于 2018-8-21 13:30 编辑

【超级查找替换】加载宏工具 多项功能有更新:

超级查找替换.rar (118.47 KB, 下载次数: 213)

1、[查找内容] 的下拉列表中,预置多项常用正则表达式
2、预置由本人总结出的提取特定文本“万能正则表达式”公式及其3种变形公式,当选择其中一种时,自动将其中作为变量的部分反选,方便代入用
户的目标正则表达式。
3、[替换为] 的下拉列表中,同样也内置多项常用表达式。
4、从[查找内容]的下拉列表中选中一个内置选项时,[替换为] 和 [字符修剪] 的输入框中将智能地填写最常用的对应项,可以满足常用需求。
5、被执行过查找或替换的表达式,将被保存在下拉列表中。使用窗体中的“关闭”commandbutton关闭窗口时,也将保留;如果使用窗体右上角的标题栏
的红X按钮关闭窗口,则由用户输入的表达式将被从下拉列表中清除、恢复为默认状态。
6、“正则表达式”助手,在此前已经添加,但这次更新又有所加强
①双击其列表中的表达式,就会自动把该表达式复制到windows剪贴板
②在其表达式编辑框中做修改时,则自动把其整个在预览框中显示的内容复制到Windows剪贴板。
7、添加2003版的xla格式的加载宏文件
8、添加对64位Excel的兼容代码。(请使用64位Excel的用户反馈一下兼容代码能否正常起作用)
9、修正一处Bug。


下一版更新预告:
下一版将主要考虑添加帮助文档。
当前,用户可以参考本主题的实例。以及本主题的姊妹篇:
《提取符合特定规则的文本,我用“万能正则表达式!”》
http://club.excelhome.net/thread-1430954-1-1.html
(出处: ExcelHome技术论坛)
此外,本人最近集中回复了数十个相关帖子,其中大多数都使用了本工具来解答的,并且有清晰的gif动画演示。


界面和功能展示_超级查找替换.gif



再次分享一个实例:
如何提取一个单元格中的多个金额并求和?

原求助贴见:
一个单元格内有多组数据,提取固定字符前面的数字求和~~~~~
http://club.excelhome.net/thread-1217806-1-1.html
(出处: ExcelHome技术论坛)
一个单元格内有多组数据,提取金额并求和.rar (11.15 KB, 下载次数: 82)

演示如下:

超级替换44.gif


TA的精华主题

TA的得分主题

 楼主| 发表于 2018-11-12 18:21 | 显示全部楼层
本【超级查找替换】加载宏小工具当前最新版,添加了2个新的易用选项功能;所有功能经测试已经稳定,支持Excel2003及以上各版本,特此发布正式版V1.0.1811

超级查找替换v1.1811.rar (64.11 KB, 下载次数: 375)

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-26 12:00 | 显示全部楼层
本工具的应用非常广泛。
实例演示一:
今天的新求助帖子

求助:如何提取一串数据中的数字部分
http://club.excelhome.net/thread-1421266-1-1.html

保留数据中最后一组数字:
保留最后一组数字.png




TA的精华主题

TA的得分主题

发表于 2018-6-28 14:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
硬是要得,谢谢分享

TA的精华主题

TA的得分主题

发表于 2018-7-4 17:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
下载,学习中,谢谢了

TA的精华主题

TA的得分主题

发表于 2018-7-5 10:57 | 显示全部楼层
这个超级查找和替换的xlam,我用WPS打开用不了是什么原因啊

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-5 14:21 | 显示全部楼层
slhlimted 发表于 2018-7-5 10:57
这个超级查找和替换的xlam,我用WPS打开用不了是什么原因啊

抱歉,本加载宏,作为免费工具,我只在32位的Excel 环境中做了测试,所以建议在同样环境中使用。

如果你确实很需要在WPS环境中使用,可以找有经验的人改写其中不兼容的部分。不兼容的主要原因,可能是其中使用的Windows API函数、VBA窗体对象和EXCEL对象,特别是后两者。改写时,可能需要在WPS的VBA环境下重画窗体,并把代码中的EXCEL对象改为对应的WPS对象,以及一些其它细节调整。

TA的精华主题

TA的得分主题

发表于 2018-8-12 17:16 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-13 11:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

再次分享一个例子:
问题一、提取单元格内多个数值并求和。
问题二、提取单元格内最后一项数值。

这个例子中的问题一和问题二,表面上看与7楼和2楼的实例分别雷同,但实际上,由于本例中的数值项可能显示为小数、整数、百分数,还要区分“,”作为千位分隔符还是一般的非数值字符,因此提取的难度加大了很多。

使用本加载宏工具解决此例中两个问题的过程,演示如下:

其中,

查找内容替换为修剪字符分列的字符
(-(?!\d|\.)%*|\.(?!\d)%*|,(?!\d{3}\D?)|[^\d\.,%-]+%*)++0\+0 求助一:步骤1
,   求助一:步骤2
(.+)=$1  求助一:步骤3
(-(?!\d|\.)%*|\.(?!\d)%*|,(?!\d{3}\D?)|[^\d\.,%-]+%*)+#  求助二:步骤1
.*?#([^#]*)#?$$1  求助二:步骤2


本例的来源见 原求助贴:

   如何提取文本中最后一串数字http://club.excelhome.net/thread-1030353-1-1.html

如何提取最后一串数字.zip (10.7 KB, 下载次数: 52)

超级替换46.gif

TA的精华主题

TA的得分主题

发表于 2018-8-13 16:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
真是技术帖呀。支持
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-3-28 22:11 , Processed in 0.061177 second(s), 13 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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