所以这很可能是最简单的问题,但我只是自己去学习。抱歉这个愚蠢的问题。
我有一个庞大的Google电子表格(2700多行)我需要循环并自动将数据从一个单元格(dataA)移动到另一个单元格(在以dataB开头的下一行数据前面),然后删除3数据行上方的行并移动到下一个记录(4行块)。在我做任何事情之前,我必须通过插入一栏来腾出空间。
我创建了一个插入列的函数,将第一个数据单元格(现在为B2)复制到新目标(A4),然后正确删除目标上方无用的三行。因为这是相对的和迭代的,我不知道如何使用一个循环来调整这个部分,这个循环将遍历整个工作表的其余部分。
如何创建一个遍历4行每个块的循环,执行上述操作,然后移到下一个4行的块中,在顶部一个接一个地留下每个完成的行?
这是起始数据结构的一个示例:
starting data structure - one record of many
function moveValuesOnly() {
var ss = SpreadsheetApp.getActiveSpreadsheet ();
var sheet = ss.getSheets()[0];
// This inserts a column in the first column position
sheet.insertColumnBefore(1);
var start = ss.getRange("B2");
var source = ss.getRange("B2");
source.copyTo (ss.getRange ("A4"), {contentsOnly: true});
source.clear ();
sheet.deleteRows(1, 3);
}
答案 0 :(得分:0)
要创建循环,您首先需要知道应该从哪里开始,何时停止以及进度有多快。
从第一行开始,直到最后一行使用getLastRow()
,然后一步进行4行。
我建议您调整moveValuesOnly()
以接受输入rowstart
并使用循环调用它几次但具有不同的行值。请注意,您必须更改当前的硬编码输入" B2"和" A4"基于rowstart值的东西。 getDataRange().getValues();
可能对您编辑工作表很有用。
循环看起来像
for (i=0; i<sheet.getLastRow(); i+=4) {
moveValuesOnly(i);
}