在过往的功能开发中,已经对查找替换功能做了一些增强,特别是引用了正则表达式的操作,但其替换的操作是批量性的替换,而非当前行的范围内替换,在大量的使用占位符替换某些内容时,多数是对当前行的替换,故重新开发一个对当前行的占位符的替换操作。
回顾下Excel催化剂现有的查找替换功能增强
首先在文本处理的功能中,已经有批量替换的功能存在,详见 第25波-小白适用的文本处理功能 。
其中有常见的中文、英文、数字等的清除,还有更强大的正则处理方式来查找符合条件的字符并替换。
![5526fa4fedf3f66146064640beec599e.png](https://i-blog.csdnimg.cn/blog_migrate/7dbd9500a9ed4cafee11f77490120cdd.jpeg)
![c981691a35397e1c7e1a7bc3a1144918.png](https://i-blog.csdnimg.cn/blog_migrate/b9f76cb42293db10285d277fe94cca63.jpeg)
在多个字符串多次替换的操作中,在第101波-批量替换功能(增加正则及高性能替换能力)中,也是作了实现。
![278e682fb1c6626d0b79eba0b86111fc.png](https://i-blog.csdnimg.cn/blog_migrate/ae3ab865aea72b3c647d5c75ac8717a3.jpeg)
无比低效的普通字符串连接法实现占位符替换
在我们需要将某几个单元格的内容串起来成为一个单元格内容时,无论使用CONCATENATE还是用&连接符,都是非常低效的,特别是在非占位符中有英文双引号时,更为如此,就如下图中,特意模拟了一些有英文双引号的例子。
![2b82432aa81b6008aaf7f5e8f656ab53.png](https://i-blog.csdnimg.cn/blog_migrate/4dcff00da9f6054e8d6c31fe08481363.jpeg)
经过抽象提取其逻辑后,其实我们更想要的效果是只需构造一个占位符的方式,然后有方法自动将占位符替换为对应的单元格内容即可,这将比使用公式的方式,不断地需要考虑双引号冲突了&符号两边都要加上双引号等操作方便得多。
当然这个对应关系是仅对当前行处理,而不是多行引用同一个内容。
后面视频里的演示效果不是最精简的,如下图,我们可以对替换的内容进行复用。
![b61528773321271e1b92ad3df47ed471.png](https://i-blog.csdnimg.cn/blog_migrate/163c5fd97506c09466a291ae62ee34d3.jpeg)
功能实现
功能实现有最终生成值和公式两种效果,给出两个按钮,一步到位。
![3c5c88aa585d261b6c2db8aee30b17e5.png](https://i-blog.csdnimg.cn/blog_migrate/55af4474e42506f577561d7ee9a6353f.jpeg)
具体实现步骤
- 将需要替换的文字部分用大括号括起来,让程序可识别到,如果原数据也有大括号,问题应该也不大,因程序识别的是{列字母}。
- 同样地我们无需多行内容都构造,只需将顶行给构造好,余下同样规则的自动按顶行的内容来操作,留下的步骤就是需要选定要操作的数据区域,让程序好知道要替换哪些行哪些单元格(人性化地自动将隐藏行的单元格忽略处理)
- 最后根据需要生成的是值还是公式,选择不同的按钮即可完成,公式的话,当然后期引用列的内容更新了,可同步更新,某些场景上更有优势。
![31a8942ab57959c6ca8853b9dbfb94c5.png](https://i-blog.csdnimg.cn/blog_migrate/e83ad511c0087920be88ae9bf24f4020.jpeg)
具体效果,给大家上视频动画,即可感受到它的无穷便利性,反正作为一个写代码的数据分析工作者,这样的替换场景经常发生,也是由自身需求导向来开发出此功能来。