如何将公式拖入空单元格(仅限一列)? Google Apps脚本

问题描述 投票:0回答:1

我正在尝试执行以下操作: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);

                                    }
       }
  }
javascript loops google-apps-script formula
1个回答
0
投票

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

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

Modified script:

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);
  }
}

Reference:

如果我误解了你的问题并且这不是你想要的结果,我道歉。

© www.soinside.com 2019 - 2024. All rights reserved.