首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >过滤并复制到工作表

过滤并复制到工作表
EN

Stack Overflow用户
提问于 2017-05-22 03:12:01
回答 1查看 1.2K关注 0票数 1

我使用的是Google页面,其中我在A栏中列出了与他们的名字相关的人员列表。在B栏中,我有一些数据应该与它们相关联,以便复制到它们的工作表中。

我在这里创建了一个示例,以展示它的外观。我还附带了一些代码,这些代码在技术上可以满足我的需要。唯一要注意的是,在复制的同时,我不能将名字输入A列。此外,为了使其工作,我必须手动选择整个范围,而不是让范围是静态的或动态的(直到最后一行数据)。

如何修改下面的代码(也在工作表中)以满足我的需要?下面的代码假设名称总是在b列中,并复制包含该名称的整个行,而不仅仅是它旁边的数据。

代码语言:javascript
运行
复制
var ss=SpreadsheetApp.getActiveSpreadsheet();
var master = ss.getSheetByName('Home');
var colWidth = master.getLastColumn();// last used col in masterSheet
var sheets = ss.getSheets();// number of sheets

function onOpen() {
  var menuEntries = [ {name: "Copy selected Rows to sheets", functionName: "copyRowsOnConditionV2"},
                     ];
  ss.addMenu("Copy functions",menuEntries);// custom menu
}

function copyRowsOnConditionV2() {
  var sheetNames = [];// array of existing sheet names
  var sheets = ss.getSheets();// number of sheets
  for(s=0;s<sheets.length;++s){sheetNames.push(sheets[s].getName())};

  var selectedfirstRow = ss.getActiveSelection().getRowIndex();
  var selectedHeigth = ss.getActiveSelection().getHeight()
  var selectedFullRange = master.getRange(selectedfirstRow,1,selectedHeigth,colWidth);
  var data = selectedFullRange.getValues();
  for(n=0;n<data.length;++n){
    if(data[n][1].length<16){

     var dest = ss.getSheetByName(data[n][1].toString().replace(/ /g,''));//find the destination sheet
     Logger.log(data[n][1].toString().replace(/ /g,''))
     var destRange = dest.getRange(dest.getLastRow()+1,1);// define range
     master.getRange(selectedfirstRow+n,1,1,colWidth).copyTo(destRange);// and make copy below last row
     }
  }
}

任何帮助都将不胜感激!

EN

Stack Overflow用户

回答已采纳

发布于 2017-05-22 06:02:59

您需要更改在for循环中使用的索引。若要引用工作表中的第一列,请使用索引0。

代码语言:javascript
运行
复制
for(n=0;n<data.length;++n){
    if(data[n][0].length<16){ //index 0 refers to column A

     var dest = ss.getSheetByName(data[n][0].toString().replace(/ /g,''));//find the destination sheet
     Logger.log(data[n][0].toString().replace(/ /g,''))
     var destRange = dest.getRange(dest.getLastRow()+1,1);// define range
     master.getRange(selectedfirstRow+n,1,1,colWidth).copyTo(destRange);// and make copy below last row
     }
  }
票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44104087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档