如何在不移动过滤功能的情况下将一组过滤后的数据移动到另一个工作表

how to move a set of filtered data to another sheet without moving filter function?

本文关键字:移动 过滤 一组 数据 工作 另一个 功能 情况下      更新时间:2023-09-26

我已经使用过滤器函数= filter ('check-in'!A8:G,'check-in'!C8:C=C4)来过滤我的'check-in'表在我的'check-out'表中的东西。我还做了我的"签出"的第一列,以一种方式将行复制到一个名为"数据库"的表,一旦行的第一列包含"y"(意味着是)。它可以工作,但是当选择第一行(其中包含筛选函数)时,它还会复制公式,并且数据库工作表在此之后不会存储更多数据。任何建议都将不胜感激。

function onEdit(event) {
  assumes source data in sheet named Needed
  target sheet of move to named Acquired
  test column with yes/no is col 4 or D
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();
  if(s.getName() == "check-out" && r.getColumn() == 1 && r.getValue() == "y") {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Database");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).copyTo(target);

您只能复制以下值:

copyTo(目的地,选项)

将数据从一个单元格区域复制到另一个单元格区域。通过默认情况下,值和格式都被复制,但这是可以的使用高级参数重写。

 // The code below will copy only the values of the first 5 columns over        
 // to the 6th column.
 var sheet = SpreadsheetApp.getActiveSheet();
 sheet.getRange("A:E").copyTo(sheet.getRange("F1"), {contentsOnly:true});
 }

在你的例子中:

s.getRange(row, 1, 1, numColumns).copyTo(target, {contentsOnly:true});