Google Sheets复制函数时如何让引号内的范围参数自动调整?
解决方案
引号包裹的内容属于静态文本,Google Sheets不会将其识别为单元格引用,因此复制公式时不会触发相对引用的自动更新逻辑,可通过以下两种方式解决:
方案1:优化自定义函数(推荐)
直接删除多余的字符串参数,让函数直接接收单元格范围引用作为入参,从根源避免静态文本不更新的问题。修改后的函数代码如下:
function countlinks(range) { var formulas = range.getFormulas()[0]; var values = range.getValues()[0]; return formulas.reduce(function(acc, formula, i) { return acc += (/^=HYPERLINK/i.test(formula) && values[i] > 0 ? 1 : 0); }, 0); }
使用时公式直接简化为:
=countlinks(B150:BK150)
复制到其他行时,范围会按照相对引用规则自动调整行号,完全符合需求。
方案2:不修改现有函数,动态拼接范围字符串
如果不想调整现有自定义函数的逻辑,可以把静态的范围字符串改为通过ROW()函数动态拼接的形式,公式调整为:
=countlinks("B"&ROW(B150)&":BK"&ROW(B150), B150:BK150)
ROW()函数会返回对应引用单元格的行号,复制公式时内部的B150引用会自动更新行号,拼接出来的范围字符串就会同步调整。
内容的提问来源于stack exchange,提问作者bob
相关产品推荐
相关产品推荐

