根据 Google 脚本中的 A 查找下一个空闲行

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

我对 Google 表格有以下问题。

我使用这个脚本:

function copy() {
 
  var quelleTabellenName="Sheet1";

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(quelleTabellenName);
  var row = sheet.getActiveCell().getRow();
  var zielTabellenName="Sheet2";
  var zielTabelle=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(zielTabellenName);
  var letzteZeileVonZielTabelle=zielTabelle.getLastRow();
    zielTabelle.getRange((letzteZeileVonZielTabelle+1),1,1,11).setValues(sheet.getRange(row,1,1,11).getValues());
}

它将标记行的前 11 个单元格从 Sheet1 复制到 Sheet2 中的下一个空闲行,效果很好。

现在我的两个问题:

  1. 我不喜欢每次都标记所需的行,它总是相同的,在这种情况下是第nr行。 4、是否可以更改活动行来固定第4行,该怎么做?

  2. 此脚本仅重写 Sheet2 中的第 1-11 列,如果第 12 列及更多列为空,则效果很好。我想在第 13 列中创建一个无尽的公式,对其他列求和,我想将公式复制粘贴到第 999 行,但随后他在第 nr 行添加了一个新行。 1000.

    是否可以更改脚本,让他只在 A 列中查找下一个空闲行并获取下一个空闲行?例如,有 20 个填充行,数据位于第 1-12 列 (A-L),在第 21+ 行中,只有 L 列填充有公式,因此脚本应将第 21 行标识为下一个空闲行并添加列1-11(A-K)在那一行,但不改变L21,这可能吗?现在他将数据写入第1000+行?

谢谢你,抱歉我的英语不好

google-apps-script google-sheets
2个回答
1
投票

替换这条线

var letzteZeileVonZielTabelle=zielTabelle.getLastRow();

var letzteZeileVonZielTabelle= findFirstFreeRow(zielTabelle, 4)

并将此功能添加到您的项目中:

function findFirstFreeRow(sheet, colNum) {
var v = sheet.getRange(1, colNum, sheet.getLastRow()).getValues(),
    l = v.length,
    r;
while (l > 0) {
    if (v[l] && v[l][0].toString().length > 0) {
        r = (l + 2);
        break;
    } else {
        l--;
    }
}
return r;
}

如果添加 Logger.log(zielTabelle),您应该会在 zielTabelle 中看到行号,其中包含第 4 列中的第一个空闲单元格(在所有数据之后)。当然,您可以使用适合您的任何列号。

我希望这有帮助?


0
投票

在 Sheet2 中,我有 10 个填充原始数据,其中 A-L 列中包含数据。 A-K 列由脚本填充,L i 列中有一个公式:=D*+E*。此脚本复制 Sheet1 中的活动行,并将前 11 列插入 Sheet2 中的第一个空闲原始数据中。如果 Sheet2 中没有更多数据(L 列中),则它可以工作。 如果我在 Sheet2 中有 10 行填充,它将填充原始 11 的前 11 列。 如果我在L11的原始11中有公式=D11+E11,他认为原始11已满并将11个单元格复制到原始12,我希望他只查找A列中的数据,所以他会认识到A11是清空并将数据复制到A11:K11,即使L11不为空。

我希望我能解释一下

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