当前位置: 首页 > 知识库问答 >
问题:

从表中检索行(具有特定值)并将特定行插入新工作表

郭修平
2023-03-14

我是新来的,不知道该怎么办。情况就是这样

1)我有一个表,我有3列,其中一列有一个类别值。

2) 我正在编写一个脚本,从表中选择范围并在特定列中查找该值。

3) 如果该行具有我要查找的值,我希望复制表的整行并将其粘贴到新的电子表格上。

函数设置

var表=电子表格应用程序。getActiveSpreadsheet()。getSheetByName(“Sheet1”);

var范围=工作表。getRange('B1:B35');

var destination=电子表格应用程序。getActiveSpreadsheet()。getSheetByName(“Sheet3”);

var verduras='verduras';

VAR规则=SpreadsheetApp.new数据验证()。

range.set数据验证(规则);range.copyValuesToRange(目的地,1, 2, 1, 2);

}

解决方案:

function myFunction() {

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("TableWithInformation");
  var columnToSearch = 2; // B column 
  var lastrow = sheet.getLastRow();
  Logger.log(sheet.getLastRow());
  var range =sheet.getRange(1,columnToSearch,sheet.getLastRow(),columnToSearch);
  var destination = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Report");
  var values = range.getValues();

  //Destination  
  var numberOfColumns = 3;
  var numberOfRows = 1 ;
  var startColumn = 1;
  var startRow = 2;

  // equivalent to destination.getRange('A1:C3');     
  var count = 0
  var destRow = destination.getLastRow()+1
  for(var i=0;i<values.length;i++){
    Logger.log("i is now: " +i);
    Logger.log("Current row value: " +values[i][0]) 

    if(values[i][0] == 'Category'){
      Logger.log("*** Value found in cloumn: " +values[i][0] +"**** \n Count: " +i);
      count++;

      var rangeToCopy = sheet.getRange((i+1), 1,numberOfRows,numberOfColumns);

      var destinationRange = destination.getRange(destRow, startColumn,numberOfRows,numberOfColumns);
      destRow++;
      Logger.log("Next Destination row: " + destRow);
      rangeToCopy.copyTo(destinationRange);


    }
  }

}

共有2个答案

田信然
2023-03-14

试着这样做:

function myFunction() {
var values = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getDataRange().getValues();
for(var i = 0, len = values.length; i < len; i++){
if(values[i][1] == 'Category'){
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet3").appendRow(values[i]); 
}
}
}
皇甫雨华
2023-03-14

我真的不明白你试图用数据验证规则来实现什么。

我会使用一个循环,搜索你正在寻找的值。如果在该范围中找到该值,则复制该范围的值。

下面是一个示例,如果这是您想要的,您需要修改它以复制整行。这将只复制B列中的值。

编辑:

function myFunction() {

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  var columnToSearch = 2; // B column 

  Logger.log(sheet.getLastRow());
  var range =sheet.getRange(1,columnToSearch,sheet.getLastRow(),columnToSearch);
  var destination = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet3");
  var values = range.getValues();

  //Destination  
  var numberOfColumns = 3;
  var numberOfRows = 1 ;
  var startColumn = 1;
  var startRow = 1;
                         // equivalent to destination.getRange('A1:C3');     
  var destinationRange= destination.getRange(startRow, startColumn,numberOfRows,numberOfColumns); 
  var count = 0;
  for(var i=0;i<values.length;i++){
    Logger.log("i is now: " +i);
    Logger.log("Current row value: " +values[i][0]) 
    if(values[i][0] == 'Category'){
      Logger.log("*** Value found in cloumn: " +values[i][0] +"**** \n Count: " +i);
      count++;
      var rangeToCopy = sheet.getRange(i, 1,numberOfRows,numberOfColumns);
      rangeToCopy.copyTo(destinationRange);
    }
  }

}

我认为如果你学习一些基本的控制结构和javascript会更容易。网上有很多不错的资源,例如:

http://www.codecademy.com/en/tracks/javascript

也可以看看google参考页面,了解google app的具体功能。

https://developers.google.com/apps-script/reference/spreadsheet/range

 类似资料:
  • 我正在寻找一种方法来合并特定行值从多个电子表格时,某些验证得到满足。 场景:我目前有Sheet1、Sheet2、Sheet3,我想要的是在满足验证时将Sheet2和Sheet3中的数据合并到Sheet1中。 表1: 第2张: 第3张: 基于上述示例,我在sheet1单元格A2中使用了此函数 因此,如果列E“类型”是“新玩家”(验证),它会自动添加表2中的行值。 我想要的是,如果类型为“New Pl

  • 我需要使用Python从工作表中删除一行。我们的工作表上有数千条记录,数据会定期更新,因为所有的事情都是用Python完成的,所以这个任务也需要用Python完成。 这就是我到目前为止从留档和其他教程中得到的: 与工作表的连接必须在不同的函数中进行,因为我在其他地方多次使用它,但在下一个函数中,我会发出请求并得到错误: 错误: 我搜索过的每一个SOF示例和类似问题都使用了完全相同的请求!但我仍然无

  • 问题内容: 我正在使用一个每个键有两个值的Multimap。下面是我用来分别获取每个值的代码: 代码的第一位获取第一个对象值: 然后,我正在使用另一种方法来检索其他值。此方法将第一个对象作为参数: 这似乎是一种“骇人的”做事方式,那么我有什么办法可以更轻松地获得价值? 问题答案:

  • 问题内容: 请告诉我如何获取特定行的列值= 123的列名。 问题答案: 结果

  • 问题内容: 我有一个带有两列“标识符”,“值”和“子标识”的以下数据框 df : 我有一个索引列表,例如 我想在列表x中提到的索引之前插入行。就像,对于在索引2之前插入的行,将具有以下值,它将具有 与 在索引2处的行 相同的标识符 ,即1; 与 索引2的行 相同的值 ,即103;但是新行中的 subid 将是((索引2处的subid)-1),或者仅仅是前一行的subid,即1。 以下是我期望的最终

  • 问题内容: 在我的阻止代码中,我试图以编程方式检索具有特定值属性的产品列表。 或者,如果不可能的话,将如何检索所有产品然后过滤它们以仅列出具有特定属性的产品? 如何使用标准布尔过滤器执行搜索或匹配产品的子集? 问题答案: 几乎所有的Magento模型都有一个对应的Collection对象,该对象可用于获取模型的多个实例。 要实例化产品集合,请执行以下操作 产品是Magento EAV样式的模型,因