将公式添加到列中的空白单元格

Adding a formula to blank cells within a column

 function copyformula(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var formrange = ss.getRange("J1");
  var formval = formrange.getValues();
  var sourceSheets = ss.getSheets();
  for( sheetNumber = 2; sheetNumber < sourceSheets.length; sheetNumber++) {
  var range = ss.getRange("J3:J1000");
  var values = range.getValues();
  for (var i = 0; i < values.length; i++) {
    if (values[i][0] == '') {
      var cell = range.offset(i, 0, 1, 1);   
      cell.setValues(formval);
      Utilities.sleep(750); //Edit value to adjust amount of pause between function calls (time is in milliseconds). Make it long enough to avoid #error, but not too long to save time.

    }
  }
} 
}

您好,目的是检查第 J3:J1000 列中的空白单元格,(需要查看多张纸)如果有空白单元格,请将其替换为 J1 中的公式(这将出现在所有表格上)。我需要它来复制 J1 中的公式并粘贴它,因此它会更改所有单元格引用。示例:假设 J307 为空,公式从 J1 复制并粘贴到 J307,但所有 If 等现在都基于 J307 及其周围的其他单元格值。这将设置为与 google 触发器一起使用(更改时)

任何帮助将不胜感激:)。目前上面的脚本没有做任何事情并且超时。

  • 您想将每个 sheet 单元格 "J1" 中的公式放到 "J".
  • 列的空单元格中
  • 您想在将公式放入单元格时将行号反映到公式中。
  • 您想检查 sheet 索引从 2 到最后一个索引。
  • 您想使用 Google Apps 脚本实现此目的。

我能像上面那样理解。如果我的理解是正确的,那么这个答案呢?请将此视为几个可能的答案之一。

示例脚本:

function copyformula(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sourceSheets = ss.getSheets();
  for( sheetNumber = 2; sheetNumber < sourceSheets.length; sheetNumber++) {
    var sheet = sourceSheets[sheetNumber];
    var values = sheet.getRange("J3:J" + sheet.getLastRow()).getValues();  // Modified
    var formula = sheet.getRange("J1");
    for (var i = 0; i < values.length; i++) {  // Modified
      if (!values[i][0]) {  // Modified
        formula.copyTo(sheet.getRange(`J${i + 3}`), SpreadsheetApp.CopyPasteType.PASTE_FORMULA);
      }
    }
  }
}
  • 为了将行号反映到复制的公式中,我使用了copyTo
  • 在这种情况下,检查数据范围的第3行到最后一行。
  • 如果不想使用V8,请将sheet.getRange(`J${i + 3}`)修改为sheet.getRange("J" + (i + 3))

参考: