-1

添加行示例的图片

如图所示,A列有11行数字,我想给它加行,让它显示为D列的数字

您会看到 A 中每 3 行数字,我想在其上下添加一个新行,顶部的新行值为“0”,底行是这三行数字的总和值例如前三行是1,2,3,它们的和是“1+2+3=6”,后三行是4,5,6,和是“4+5+6=15”第三三行是7,8,9,总和是“7+8+9=24”如图所示,你看到列的最后一部分是“10和12”,它们是两行(小于三行),但在这种情况下,它仍然需要添加两个新行,顶部的一行是“0”,底部的一行是“10+12=22”

现在,我写了两个 for 循环函数来插入行

function insertRows() {
         var ss = SpreadsheetApp.getActiveSpreadsheet();
         var sheet = ss.getSheetByName("sheet1");

         var numRows = SpreadsheetApp.getActiveSpreadsheet().getSheetByName ("sheet1").getLastRow();

         for (var i=1; i <= numRows+2; i+=4) {
              var addrow = sheet.insertRowsBefore(i,1);
              }

         }

  function insertRows2() {
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var sheet = ss.getSheetByName("sheet1");

        var numRows = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet1").getLastRow();

           for (var j=4; j <= numRows+2; j+=5) {
                var rowadd= sheet.insertRowsAfter(j,1)
                }
     }

"insertRows()" 用于插入首行,"insertRows2()" 用于插入底行,到目前为止这两个函数都可以很好地将行插入正确的位置,但我不知道如何在循环中用“0”填充顶行以及如何在底行中填充每三行数字的总和值。

你们知道如何用正确的值填写行吗?

4

1 回答 1

0

这个示例脚本怎么样?我认为您的情况有几个答案。因此,请将此视为其中之一。

流动 :

  1. 从 sheet1 的“A1:A11”中检索值。
  2. 使用检索到的值,它为结果创建一个数组。
    • 首先,它将值分开,同时插入0到顶部和末尾的总和。
    • 重要的一点是,创建数组以将电子表格作为二维数组。
  3. 将结果值放入 sheet1 的“D1:19”。

示例脚本:

function insertRows() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("sheet1");
  var value = sheet.getRange(1, 1, sheet.getLastRow(), 1).getValues().filter(Number);
  var result = [];
  var temp = [[0]];
  var sum = 0;
  for (var i = 0; i < value.length; i++) {
    temp.push(value[i]);
    sum += value[i][0];
    if ((i + 1) % 3 == 0 || i == value.length - 1) {
      temp.push([sum]);
      result = result.concat(temp);
      temp = [[0]];
      sum = 0;
    }    
  }
  sheet.getRange(1, 4, result.length, 1).setValues(result);
}

笔记 :

  • 运行此示例脚本时,工作表的最后一行会更改。所以我习惯filter()var value = sheet.getRange(1, 1, sheet.getLastRow(), 1).getValues()

如果这不是你想要的,请告诉我。我想修改我的答案。

于 2018-06-05T01:52:26.723 回答