【问题标题】:How to drag down a formula into empty cells (one column only)? Google Apps Script如何将公式拖入空单元格(仅一列)? Google Apps 脚本
【发布时间】:2019-03-20 06:11:16
【问题描述】:

我正在尝试执行以下操作: 1)检查A列中填充了多少行; 2)检查G列中填充了多少行; 3) 将 G 列最后填充行中的公式向下拖动到剩余的空白单元格中。

例如,如果A列中填充了15行,但G列只有10个包含公式的单元格,我想将公式从单元格G10向下拖到G15(假设G11-15都是空的)

下面是我的代码,由于某种原因它无法正常工作(当我运行它时一直卡在“准备执行...”屏幕)

非常感谢任何帮助!

function dragdown() {

var sh=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1");
var lastpopulatedrowForm = sh.getRange("A1:A").getLastRow();
var lastpopulatedrowManual = sh.getRange("G1:G").getLastRow();

    for (var i=1;i<=lastpopulatedrowForm;i++) {

         var emptyrange= sh.getRange(lastpopulatedrowManual, 6, i, 1);

         if (emptyrange.isBlank()) {

         var copyformulacell = sh.getRange(lastpopulatedrowManual,6,1,1);
         var getformula = copyformulacell.getFormulaR1C1();
         emptyrange.setFormula(getformula);

                                    }
       }
  }

【问题讨论】:

  • 我的回答是否向您展示了您想要的结果?你能告诉我吗?这对我学习也很有用。如果这可行,与您有相同问题的其他人也可以将您的问题作为可以解决的问题。如果您对我的回答有疑问,我深表歉意。到时候,可以问一下你现在的情况吗?我想学习解决你的问题。
  • 嗨 Tanaike,让我测试一下(最终埋头工作,没有时间完成这个脚本),我会告诉你的。感谢帮助!!!
  • 感谢您的回复。如果我的回答不起作用,请告诉我。我想修改它。

标签: javascript loops google-apps-script formula


【解决方案1】:

这个修改怎么样?在此修改中,copyTo() 用于复制“G”列最后一行的公式。修改脚本的流程如下。请认为这只是几个答案之一。

  1. 检索列“A”和“G”的值。
  2. 检索列“A”和“G”的最后一行。
  3. 将“G”列最后一行的公式复制到“G”列最后一行之后的空行中。

修改脚本:

function dragdown() {
  var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1");
  var lastpopulatedrowForm = sh.getRange("A1:A").getValues();
  var lastpopulatedrowManual = sh.getRange("G1:G").getValues();
  var lastRowOfColA = 0;
  var lastRowOfColG = 0;
  for (var i = lastpopulatedrowForm.length - 1; i >= 0; i--) {
    if (lastRowOfColA === 0 && lastpopulatedrowForm[i] != "") {
      lastRowOfColA = i + 1;
    }
    if (lastRowOfColG === 0 && lastpopulatedrowManual[i] != "") {
      lastRowOfColG = i + 1;
//      break; // If lastRowOfColA is always larger than lastRowOfColG, you can use this line.
    }
  }
  if (lastRowOfColA > lastRowOfColG) {
    var src = sh.getRange(lastRowOfColG, 7);
    var dst = sh.getRange(lastRowOfColG + 1, 7, lastRowOfColA - lastRowOfColG, 1);
    src.copyTo(dst, SpreadsheetApp.CopyPasteType.PASTE_FORMULA);
  }
}

参考:

如果我误解了您的问题并且这不是您想要的结果,我深表歉意。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    • 2012-08-15
    • 1970-01-01
    • 2019-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多