匹配不同工作表上两列的文本字符串,并使用谷歌脚本

时间:2018-01-09 20:50:35

标签: javascript google-apps-script google-sheets

我正在尝试在同一工作簿中的两个单独的工作表上匹配两列

我正在尝试匹配两张表中的A列

SheetA = FindReplace SheetB = Test

如果存在匹配,则将SheetA中匹配单元格右侧的值回发到SheetB中的同一行但位于B列中

匹配列中的范围大小可能不同

该功能运行但未找到匹配

另外,我想我发回了找到的每一行但我想在找到所有匹配后只发回一次

感谢您对此提供任何帮助

如果这里有一个GS有一些数据及其中的功能:

https://docs.google.com/spreadsheets/d/1cVyCmnFYy_4Ghmx1r-dvCGhxrnu-tCPaKZSX_BRHfnM/edit?usp=sharing

function MatchColumns(){
  // gets spreadsheet A and the range of data
  var sheetA =SpreadsheetApp.getActiveSpreadsheet().getSheetByName("FindReplace");
  var dataA = sheetA.getRange('A:B').getValues();

  // gets spreadsheet B and the range of data
  var sheetB = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test");
  var dataB = sheetB.getRange('A:B').getValues();

  // loops through column A of spreadsheet A & B and compare
  for(var i = 0; i > sheetA.getLastRow(); i++){
  // checks to see if ith row value in 1st Column is the same
  if(dataA[i][0] == dataB[i][0]){
  //if match then get cell value in ajacent cell column B to right in sheetA
  var value = sheetA.getRange(i+1, 2).getValue();
  //Post Back the value in cell to column B in sheet B
  sheetB.getRange(i+1, 2).setValue(value);
  };
 };
}

2 个答案:

答案 0 :(得分:1)

这次修改怎么样?请将此视为几种解决方案之一。

  • 它将数据处理为数组。
  • 如果sheetB的A列的值不存在于sheetA的A列,则使用customer
    • 创建的数组的长度必须与dataB的长度相同。我用过这个。

修改后的脚本:

if (b != res.length - 1) res.push([""]);

结果:

enter image description here

如果我误解了你的问题,请告诉我。我想修改。

答案 1 :(得分:1)

在更改>

<后,该功能确实运行了