首页 > 解决方案 > 将单个单元格值与每个匹配项的值列匹配返回那些行 Google-apps-script

问题描述

我有一个带有 2 个标签页的电子表格。我正在尝试运行一个宏,以便当用户在第二张表的 B2 中输入名称时,它与第一张表 B 列中该名称的每个实例匹配。然后我需要复制出现的所有数据在匹配的单元格的行中,并将其粘贴在从单元格 B3 开始的第二张工作表中。我对 VBA 的经验有限,但对 JS/Google-apps-script 没有经验。任何有关如何编写此内容的帮助将不胜感激!这是我的第一个镜头:

function onSearch() {  
  // raw data sheet
  var original = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 2");
  // search for student sheet
  var filtered = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Student Progress Search");


  // retrieving the values in the raw data array of names
  var searchColumn = 2;
  var lr = original.getLastRow();
  var searchRange = original.getRange(2,searchColumn, lr, 1).getValues();

  // retrieving the name submitted on search
  var inputName = filtered.getRange(2, 2).getValue();

  // loop through all the names in the raw data and identify any matches to the search name
  for (var i = 0; i < lr; i++){
  var dataValue = searchRange[i];
  var r = dataValue.getRow();
  var line = [[r]]; 
  var paste = filtered.getRange(3, 3);

  // if the data is a match, return the value of that cell in the searched sheet
  if (dataValue == inputName){ return paste.setValues(line);
                        }

}

}

标签: searchgoogle-apps-scriptmatchcopy-pastemultiple-instances

解决方案


不确定内置的 QUERY 功能是否适合您。这正是您正在寻找的:

=QUERY(Sheet1!B:B,"select B where LOWER(B) like LOWER('%" &B2& "%')")

例如,如果用户输入“joe”,该函数将匹配任何包含“joe”的条目,而不管大小写。


推荐阅读