首页 文章

将数据移动到工作表底部

提问于
浏览
1

我在电子表格中有一个日期,客户和班次数据列表(行A5:D34) . 我想将此数据写入工作表的最后一行 . 不幸的是,行数是可变的 . 在一周内,数据可能是17行;之后,它可能是23行 . 我想通过将使用过的行移动到工作表的底部来“存档”数据 .

我正在寻找一个代码(谷歌脚本)解决方案,可以解决要复制的范围总是4列宽,但行数可变的事实 .

感谢你的帮助!

2 回答

  • 0

    这是一个非常常见的问题,我们可能不知道或不必手动包含工作表中的总行数 . 我们可以使用带有最后一行值的getRange()或getDataRange()来提取范围 .

    getRange(start_row,start_column,number_of_rows,number_of_columns);
    

    要使用从A1开始的上述语法中的最后一行,只需更改如下参数即可 .

    var range = getRange(1,1,sheet.getLastRow(),sheet.getLastColumn());
    

    第二个选项是使用getDataRange()

    var range = sheet.getDataRange();
    

    PS:请注意,范围是2D阵列 .

    希望这可以帮助 :)

  • 0

    我建议使用 sheet.getDataRange() 来知道有多少行和列包含数据 . 一旦你知道了这一点,你就可以得到最后一行 .

    要快速浏览返回的值,我建议使用 sheet.getDataRange().getValues() ,它将返回一个二维数组,其中包含存储在工作表中的所有值 .

    要了解包含数据的最后一行,您可以轻松执行以下操作:

    var lastRow = sheet.getDataRange.getValues().length;
    

    请注意,由于数组的长度从第一行的0开始计数,而当您想要将值设置回工作表时,行数将从1开始 . 这意味着您需要在lastRow计数中加1 .

    既然您知道最后一行,您可以先进行一些清理,然后使用 sheet.deleteRow(lastRow+1); 删除前一行底行

    然后添加一个新的底行你可以简单地使用append函数,你传递一个数组,其中包含行的所有单元格的所有值,如下所示:

    sheet.appendRow(["cellInColumnA";"cellInColumnB","cellInColumnC"]);
    

相关问题