如何用GAS正则表达式为公式单元格引用添加行绝对引用$符号
解决Google Apps Script中公式行锁定的问题
直接用正则表达式的分组替换就能搞定,步骤分两步:先清除所有已有的$符号,再给每个单元格引用的行号前加上$。
具体实现代码
function lockFormulaRows(originalFormula) { // 第一步:移除所有已存在的$符号 let cleanedFormula = originalFormula.replace(/\$/g, ""); // 第二步:匹配单元格引用,在列名和行号之间插入$ let lockedFormula = cleanedFormula.replace(/([A-Z]+)([0-9]+)/g, "$1$$$2"); return lockedFormula; } // 测试示例 let testFormula = "=IFERROR((AW220-AW221)/(AW216*4)/1000+AW217)"; console.log(lockFormulaRows(testFormula)); // 输出:=IFERROR((AW$220-AW$221)/(AW$216*4)/1000+AW$217)
正则说明
([A-Z]+):匹配一个或多个大写字母(对应Excel的列名,比如AW、AA这种多字母列)([0-9]+):匹配一个或多个数字(对应行号)$1$$$2:替换时,$1代表匹配到的列名,$$会被解析为单个$,$2代表匹配到的行号,组合起来就实现了列名$行号的格式
这个方法能处理所有标准的单元格引用,不管列名是单字母还是多字母,行号是几位数字都适用。
内容的提问来源于stack exchange,提问作者jason
相关产品推荐
相关产品推荐

