Excel工作表多组值批量替换是我遇到的一次真实的工作需求:当前有一份上万行的名单表,名单列的值录入的非常杂乱,同一个地址录入的不完全一致,无法直接进行数据分析或提交给数据库。在数据清洗的过程中,需要一个值一个值的处理。比如,“A区办事处”、“A区”、“A办事处”的标准名称为"第一办事处",“B区办事处”、“B办事处”、“B区”为"第二办事处",一共几十组这样的映射关系。Excel自带的"查找替换"一次只能替换一组值,我只能重复"打开替换框—输入—替换—确认"几十遍,中途还把两组值搞混了,不得不返工重来。更崩溃的是,第二天又来了一份同样的任务,我又重来了一次。当第三次任务来的时候,我上网想找一找有没有简便的方法,结果没有找到,于是决定自己写一个。
当时本来想用VBA宏实现,后来发现VBA宏复用起来不太方便,使用门槛也高。权衡下来,感觉做成Excel原生插件体验最好——替换直接作用于当前选中区域,用户不用离开Excel。考虑到通用性,不同的任务可能会有不同的映射关系,所以映射关系应该以替换方案的形式保存下来,让用户可以随时增加新的映射关系或创建不同的分组。最终,我先用最简单的CSV文件存放"源值→目标值"的映射表,映射关系用CSV文件有一个好处,记事本就能查看、编辑和共享替换方案。一个方案对应一组映射关系,用户可维护多个方案,并且替换时支持全部匹配/局部匹配、区分大小写、忽略首尾空格等选项。插件的工具栏提供了四个按钮:批量替换、方案管理、设置、关于;方案选择窗左侧是分类树、右侧带实时搜索,方便使用。这个工具我直接把它取名为“Excel批量替换”。
遇到需要多组值替换的数据,选中要替换的区域,点击"批量替换"并选中"替换方案",再多的数据,一次替换到位;财务人员可以用它把科目编码批量替换成科目名称;行政人员把像"男/M/MALE"的数据一次替换成规范的性别值。凡是"一组值需要整批替换成另一组值"的场景它都能搞定,至少对我非常有用。