我正在尝试找到一种方法将 B3 中使用的公式(目前是一个简单的 AVERAGE 公式)调用到 G3 中并在那里使用它。绿色单元格是用于测试的静态值。如果我在 G3 中执行“=B3”,我将从 B3 获取值,这不是我想要的。我想要 F3 和 H3 的平均值。基本上就像一个远程、可更新的复制/粘贴或 FormulaArray。如果这是有道理的。由于我将在其上实现的工作表将包含许多公式实例,因此我希望能够在一个地方更改它们并自动完成更新,而不需要复制/粘贴。我还将调用另一个文档中的公式。所以我想要一种方法,通过它我可以将 B3 更改为 MULTIPLY 公式,它会自动将该更改应用于 G 列中的单元格,当然会引用相关单元格。这可能吗?
我确实找到了一个问与此非常相似的问题:
How do you get the formula from a cell instead of the value?
但是在两个可行的解决方案中,Ruben 的 CELLFORMULA 设法将函数作为字符串拉入(就像在 G5 中一样),这很接近! Luiz 根本不适合我,尽管看起来他确实在尝试做我想做的事。我摆弄了它,但无论我做什么我都无法让它工作。其他建议都没有用。
这是我制作的测试表,用于说明我正在寻找的内容:
附加:
正如我所说,Ruben 的代码运行得非常完美,就像它预期的那样,并且 Luiz 表示他自己做了一些调整以使公式在新单元格中执行。但是复制和粘贴 Luiz 的代码只会产生错误,而尝试自己调整它是一个失败的原因,因为我只是最近才开始编写脚本和一般的编码。我只是尽力比较和对比 Ruben 的原始代码与 Luiz 修改后的代码,并找出任何可能是错误的差异。像这样:
function CELLFORMULA(reference) {
var ss = SpreadsheetApp;
var sheet = ss.getActiveSheet();
var formula = ss.getActiveRange().getFormula();
var re = /cellformula\((.*)\);/g;
var args = re.exec(formula);
try {
var range = sheet.getRange(args[1]);
}
catch(e) {
throw new Error(args[1] + ' is not a valid range');
}
return range.getFormula();
}
似乎 Luiz 没有像 Ruben 那样调出变量?我不确定。但是这两个代码之间的根本区别似乎是:
var args = formula.match(/=\w+\((.*)\)/i);
Ruben 与 Luiz 的比较(未更改):
re = /cellformula\((.*)\);/g;
args = re.exec(formula);
在我看来,re.exec(formula) 是 Luiz 的一段代码,应该导致执行公式,而不是将它作为字符串放入单元格中,但我肯定是错的。
正如我所说,我对这个和“(/=\w+((.))/i)”和“/cellformula((.));/g”部分不熟悉完全超出了我的理解范围。我试图搜索该语法以更好地理解它,但没有成功。
最佳答案
As I said, I am new to this and the "(/=\w+((.))/i)" and "/cellformula((.));/g" parts are completely over my head. I tried to search for that syntax to understand it better but had no luck.
它们是 regular expressions .
为了能够用另一个公式替换单元格公式,不能使用自定义函数,但这可以通过可安装的编辑函数来完成。
为简单起见,以下代码将非常具体:如果更改 B3 上的公式,则将更新 G7 上的公式。
function updateFormula(e) {
var formula = e.range.getFormulaR1C1();
if(e.range.rowStart == 3 && e.range.columnStart == 2 && formula != ""){
var sheet = e.range.getSheet();
var target = sheet.getRange('G7');
target.setFormulaR1C1(formula);
}
}
请记住创建一个调用上述函数的可安装的编辑触发器,如果您想从脚本编辑器结帐测试它 How can I test a trigger function in GAS?
关于google-apps-script - 从另一个单元格调用公式,NOT 值,并在新单元格中执行公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53622712/