Google apps script 如何防止随机化公式在工作表中的每次更改时随机化?

Google apps script 如何防止随机化公式在工作表中的每次更改时随机化?,google-apps-script,random,google-sheets,google-sheets-macros,Google Apps Script,Random,Google Sheets,Google Sheets Macros,我有一个可爱的公式: =sort(A1:A416,arrayFormula(randbetween(sign(row(A1:A416)),C1)),true) 我原以为我可以在更改C1中的值时更改随机化事件,但现在我看到,当我使用其他值更新工作表时,随机化事件会不断更改 我怎样才能避免这种情况发生 我只希望在更改C1中的种子时发生随机化尝试在脚本中使用此编辑触发器: function onEdit(e) { if(e.range.getA1Notation() == 'C1') {

我有一个可爱的公式:

=sort(A1:A416,arrayFormula(randbetween(sign(row(A1:A416)),C1)),true)
我原以为我可以在更改
C1
中的值时更改随机化事件,但现在我看到,当我使用其他值更新工作表时,随机化事件会不断更改

我怎样才能避免这种情况发生


我只希望在更改
C1

中的种子时发生随机化尝试在脚本中使用此编辑触发器:

function onEdit(e) {
  if(e.range.getA1Notation() == 'C1') {
    var sheet = e.source.getActiveSheet();
    var firstRow = 1;
    var lastRow = 416;
    var col = 1;
    var seedValue = Number(e.range.getValue());
    if(seedValue > 1) {
      for(var row = firstRow; row < lastRow; row++) {
        var cellValue = Math.ceil(Math.random() * seedValue);
        var cell = sheet.getRange(row, col);
        cell.setValue(cellValue);
      }
    }
    var range = sheet.getRange(firstRow, col, lastRow, 1)
    range.sort(1);
  }  
}
函数onEdit(e){
如果(e.range.getA1Notation()=='C1'){
var sheet=e.source.getActiveSheet();
var firstRow=1;
var lastRow=416;
var-col=1;
var seedValue=Number(e.range.getValue());
如果(种子值>1){
对于(变量行=第一行;行<最后一行;行++){
var cellValue=Math.ceil(Math.random()*seedValue);
var单元格=sheet.getRange(行、列);
cell.setValue(cellValue);
}
}
var range=sheet.getRange(第一行,列,最后一行,1)
排序范围(1);
}  
}

我希望这就是您希望通过公式实现的目标。

尝试在脚本中使用此编辑触发器:

function onEdit(e) {
  if(e.range.getA1Notation() == 'C1') {
    var sheet = e.source.getActiveSheet();
    var firstRow = 1;
    var lastRow = 416;
    var col = 1;
    var seedValue = Number(e.range.getValue());
    if(seedValue > 1) {
      for(var row = firstRow; row < lastRow; row++) {
        var cellValue = Math.ceil(Math.random() * seedValue);
        var cell = sheet.getRange(row, col);
        cell.setValue(cellValue);
      }
    }
    var range = sheet.getRange(firstRow, col, lastRow, 1)
    range.sort(1);
  }  
}
函数onEdit(e){
如果(e.range.getA1Notation()=='C1'){
var sheet=e.source.getActiveSheet();
var firstRow=1;
var lastRow=416;
var-col=1;
var seedValue=Number(e.range.getValue());
如果(种子值>1){
对于(变量行=第一行;行<最后一行;行++){
var cellValue=Math.ceil(Math.random()*seedValue);
var单元格=sheet.getRange(行、列);
cell.setValue(cellValue);
}
}
var range=sheet.getRange(第一行,列,最后一行,1)
排序范围(1);
}  
}

我希望这就是您希望通过公式实现的目标。

您需要将此公式用于公式吗?也许您可以在应用程序脚本中使用onEdit()触发器?您的问题只能通过脚本或宏来解决您需要将其与公式一起使用吗?也许您可以在应用程序脚本中使用onEdit()触发器?您的问题只能通过脚本或宏来解决