我需要在谷歌电子表格中引入功能,允许用户编辑数组公式的结果。要求的原因是 ARRAYFORMULA 为一组单元格设置了默认值,但用户有时需要覆盖这些默认值。我想知道这是否甚至是可能的。
例子:
Row(#)|Array_1 |Array_2
------------------------------------
1 |a |=arrayformula(Array_1)
2 |b |""
3 |c |""
4 |d |""
Run Code Online (Sandbox Code Playgroud)
因此 Array_2 中的所有行都由数组公式填充。但是,用户想要直接转到 Array_2 中的第二个单元格并更改其值。当然,按设计 ARRAYFORMULA 会中断。有什么方法可以修改 ARRAYFORMULA,这样它就可以简单地跳过用户编辑过的单元格并继续前进,就好像没有发生任何事情一样?
小智 2
我意识到这是一个老问题,但我今天正在寻找这个问题并制作了一个适合我的脚本。
当编辑第二列中的单元格时,此脚本会将公式放入相邻的单元格中。这样,如果您需要手动输入某些内容,则可以覆盖公式,并且不需要事先将公式放入所有行中。我让人们在预先填写公式时无意中编辑了公式并将其弄乱,所以这对我来说效果更好。
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetList = ["Sheet1","Sheet2","Sheet3"]; // list of sheets to run script on
for (i = 0; i < sheetList.length; i++) {
var sheetName = ss.getSheetByName(sheetList[i]);
// only runs if sheet from sheetList is found
if (sheetName != null) {
var aCell = sheetName.getActiveCell();
var col = aCell.getColumn();
var adjacentCell = aCell.offset(0, -1);
var formula = 'INPUT FORMULA HERE'; // put the formula you want in the adjacentCell here. Don't use it in an arrayformula
// only runs if active cell is in column 2, if the adjacentCell is empty, and if the active cell is not empty(otherwise it runs if you delete something in column 2)
if(col==2 && adjacentCell.getValue()=="" && aCell.getValue()!="") {
adjacentCell1.setValue(formula);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4519 次 |
最近记录: |