【问题标题】:Include adjacent cells when copying matched values to other sheet将匹配值复制到其他工作表时包括相邻单元格
【发布时间】:2018-08-13 08:25:17
【问题描述】:

我有一个脚本可以比较谷歌电子表格上两个不同工作表中单元格中的值。它可以成功匹配找到匹配项并将它们复制到第三张纸上。但是,我想将选择扩展到匹配项左侧的列,并复制匹配项和相邻单元格。

澄清一下:电子表格 1 包含电子邮件和专业,电子表格 2 包含他们所属大学的专业。我正在匹配专业,所以我只能收到特定大学的人的电子邮件。现在它复制的只是带有专业的单元格,但我希望它也复制带有电子邮件的单元格(这是左侧的一列)。

function match_CoE() {
  //Set variables for active spreadsheet, input data, comparitive data, and finalized match input.
  var sh = SpreadsheetApp.getActive();
  var input = sh.getSheetByName('AOP 2018-2019').getRange("C1:C").getValues();
  var values = sh.getSheetByName('Major-College-Conversion').getRange("A72:A75").getValues();
  var output = sh.getSheetByName('College of Education Contacts');
  var match = [];

  //Compare Input to Pre-determined values for matches
  for (i in input){
    var setInput = input[i][0];
    var exists = false;

    for (j in values){
      var setValues = values[j][0];
      if (setValues == setInput){
        exists = true;
        break;
      }
    } // end for j
    if (exists == true){
        match.push([setInput])
    }
  }//end for i

  //Copy matching values to new sheet.
  output.getRange(1, 1, match.length, 1).setValues(match);
}

【问题讨论】:

  • 你为什么不声明var mail = sh.getSheetByName('AOP 2018-2019').getRange("D1:D").getValues();,在exist == true时将其值推入另一个数组,然后像使用match一样将其值填充到output中?
  • @HaPhan 我不确定你的意思?那不只是复制列中的所有数据吗?
  • 扩展您获得的范围(例如 B2:B -> A2:B),并使用Array#filter。请注意,现在您有一个嵌套循环 - 对于input 的每个元素,您可能重新扫描所有values。有关优化类似任务的示例,请参阅我的答案 hereherehere。一旦您编辑了代码以尝试解决您的任务,我或其他人将很乐意帮助修复您编写的代码(而不是为您完成所有工作)。
  • 谢谢@tehhowch 和@HaPhan!我能弄明白,你们帮了大忙!

标签: google-apps-script google-sheets


【解决方案1】:

我扩大了搜索范围以包括电子邮件列表,并将我匹配的集合数据转移到一行。然后将循环中的 setInput 变量更改为 +1,将搜索范围缩小到专业并添加第二个变量 (setInputFina) 以仅返回我能够生成列表的电子邮件!

function match_CoE() {
  //Set variables for active spreadsheet, input data, comparitive data, and finalized match input.
  var sh = SpreadsheetApp.getActive();
  var input = sh.getSheetByName('AOP 2018-2019').getRange("B1:C").getValues();
  var values = sh.getSheetByName('Major-College-Conversion').getRange("A72:B75").getValues();
  var output = sh.getSheetByName('College of Education Contacts');
  var match = [];

  //Compare Input to Pre-determined values for matches
  for (i in input){
    var setInput = input[i][+1];
    var setInputFinal = input[i][0];
    var exists = false;

    for (j in values){
      var setValues = values[j][+1];
      if (setValues == setInput){
        exists = true;
        break;
      }
    } // end for j
    if (exists == true){
        match.push([setInputFinal])
    }
  }//end for i

  //Copy matching values to new sheet.
  output.getRange(1, 1, match.length, 1).setValues(match);
}

function copySet_CoE() {

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多