我对 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 中的下一个空闲行,效果很好。
现在我的两个问题:
我不喜欢每次都标记所需的行,它总是相同的,在这种情况下是第nr行。 4、是否可以更改活动行来固定第4行,该怎么做?
此脚本仅重写 Sheet2 中的第 1-11 列,如果第 12 列及更多列为空,则效果很好。我想在第 13 列中创建一个无尽的公式,对其他列求和,我想将公式复制粘贴到第 999 行,但随后他在第 nr 行添加了一个新行。 1000.
是否可以更改脚本,让他只在 A 列中查找下一个空闲行并获取下一个空闲行?例如,有 20 个填充行,数据位于第 1-12 列 (A-L),在第 21+ 行中,只有 L 列填充有公式,因此脚本应将第 21 行标识为下一个空闲行并添加列1-11(A-K)在那一行,但不改变L21,这可能吗?现在他将数据写入第1000+行?
谢谢你,抱歉我的英语不好
替换这条线
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 列中的第一个空闲单元格(在所有数据之后)。当然,您可以使用适合您的任何列号。
我希望这有帮助?
在 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不为空。
我希望我能解释一下