是否可以在 Google 电子表格中定义可在任何单元格中使用的函数?
如果我可以定义和使用引用其他单元格的函数,就像我可以使用本机函数一样,这将很有帮助,例如通过输入=myfunction(C1, C2, C3)
是否可以在 Google 电子表格中定义可在任何单元格中使用的函数?
如果我可以定义和使用引用其他单元格的函数,就像我可以使用本机函数一样,这将很有帮助,例如通过输入=myfunction(C1, C2, C3)
是的 - 有一个教程。只需在电子表格中按名称使用 javascript 函数。使用工具 > 脚本编辑器定义它们。
注意姓名限制;我对我创建的函数的行为感到困惑,这些函数的名称为“function x10() {}”,但找不到。重命名为更长的名称修复了它。对于不允许的内容,可能有记录在案的规则,但我不知道它们在哪里。
我是“新手”。但是我的经验是,您只能通过“范围”对象访问“单元格”。您必须将范围定义为单个单元格。例如“A1:A1”,将让您访问“A1”处的单元格。
RANGE 是与“SHEET”关联的对象。SHEET 是与“SPREADSHEET”关联的对象。
以下是访问当前活动工作表中的单元格 A1 的一些示例代码:
var cell_A1 = SpreadsheetApp.getActiveSheet().getRange("A1:A1");
从这里您可以像传递任何其他参数一样传递对象。
myFunction(cell_A1);
接收函数必须“知道”它正在处理“范围”。它只能通过调用与“范围”对象关联的“方法”来访问其值。
当心!“范围”可以包含多个单元格。您被调用的函数应该测试以查看它是否正在使用单个单元格。如果您传递了多个单元格的范围,则您的函数可能不会按您期望的方式运行。
范围对象的两个方法:“getNumRows()”和“getNumColumns()”返回范围对象中的行数和列数。
通常,如果您使用仅限于更改或访问单个单元格的方法,并在更大的范围集上进行操作,则该功能将仅对左上角的单元格成员执行。不过要小心。虽然您可能假设某个方法只会更改单个单元格,但它实际上可能会影响范围内的所有单元格。仔细阅读文档。
还有另一种获取单个单元格范围的方法。它的指令如下所示:
var cell_B2 = SpreadsheetApp.getActiveSheet().getRange(2, 2, 1, 1).
前两个参数告诉“getRange”函数单元格的位置(行、列格式)。后两个参数定义与范围关联的“行”和“列”的数量。通过将它们都设置为“1”,您可以访问单个单元格。
希望这可以帮助。