Google Sheets中基于两列映射字典批量区分大小写替换字符
在Google Sheets中实现区分大小写的批量字符替换
解决方案:使用自定义Apps Script函数
针对区分大小写、支持多字符/空值替换、映射表可扩展、避免嵌套公式的需求,最佳方案是创建自定义函数,通过Google Apps Script实现灵活的字符映射替换。
步骤1:创建自定义函数
- 打开目标Google Sheets文档,点击顶部菜单扩展 > Apps 脚本
- 删除默认的
myFunction代码,粘贴以下脚本:
function MAP_REPLACE(inputStr, mapRange) { // 处理空输入,直接返回原内容 if (!inputStr || !mapRange) return inputStr; // 将映射表转换为键值对对象,提升查找效率 const replaceMap = mapRange.reduce((obj, row) => { const [sourceChar, replacement] = row; // 跳过空的源字符行 if (sourceChar !== '') { // 替换值为空时,默认设为空字符串 obj[sourceChar] = replacement !== undefined ? replacement : ''; } return obj; }, {}); // 遍历每个字符,按映射表替换,未匹配的字符保留原样 return inputStr.split('').map(char => replaceMap[char] || char).join(''); }
- 点击脚本编辑器顶部的保存按钮,为项目命名(比如
CharReplaceTool)
步骤2:在单元格中调用函数
假设:
- 需要替换的源字符串在单元格
C1 - 映射表位于
A2:B(A列为源字符,B列为替换内容,支持后续新增行)
在目标单元格输入公式:
=MAP_REPLACE(C1, A2:B)
测试示例
按照需求设置映射表:
| A列(源字符) | B列(替换内容) |
|---|---|
| 2 | Ą |
| 4 | Ę |
| A | x |
| a | • |
| C | 7 |
输入源字符串1234AaCD,函数会返回1Ą3Ęx•7D,完全符合预期。
关键特性说明
- 区分大小写:通过严格的字符匹配(对象键的严格相等判断),确保
A和a被视为不同字符分别替换 - 支持多字符/空值替换:替换内容可以是任意长度的字符串,甚至为空(空值会直接删除对应源字符)
- 可扩展映射表:只需在
A2:B范围内新增行,公式会自动加载新的映射规则,无需修改函数或公式 - 高效处理大量映射:将映射表转为对象后,查找替换的时间复杂度为O(n)(n为字符串长度),几百行映射表也能快速处理
内容的提问来源于stack exchange,提问作者Artur
相关产品推荐
相关产品推荐

