我试图将A列中32个名字的列表随机排序到B列,我发现这个公式是这样做的:
=sort('Sheet1'!A2:A33,arrayFormula(randbetween(sign(row('Sheet1'!A2:A33)),100)),true)
这很好用,但我希望能够使用B列中的新/随机列表在其他公式中使用。问题是,无论何时更新任何单元格(甚至在另一张纸上),列表都会重新随机化,从而阻止我使用随机列表中的任何单元格。
因此,我尝试将公式从其所在的单元格中取出并将公式放在菜单选项中,认为这会阻止工作表/单元格使用此Apps脚本进行更新:
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Custom Menu')
.addItem('Menu1', 'menuOption')
.addToUi();
}
function menuOption() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var cell = sheet.getRange("B2");
cell.setFormula("=sort('Sheet1'!A2:A32,arrayFormula(randbetween(sign(row('Sheet1'!A2:A33)),100)),true)");
}
但是无论何时编辑单元格,它仍然会重新随机化列B中的列表。运行时,是否可以只调用一次公式或应用脚本功能?
谢谢,
答案 0 :(得分:1)
细胞内的公式会随着每次编辑而更新,对于您遇到的问题,您必须在电子表格的某个单元格内调用它。
您需要删除此调用,并且只能通过脚本界面或菜单按钮运行它。
或
如果您不介意浪费谷歌服务器资源,请在电子表格的某个位置设置一个布尔值,并在运行脚本的排序方面之前检查该值。