重新配置匹配功能Google脚本的输出

时间:2018-01-10 18:20:55

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

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

SheetA = FindReplace SheetB = Test

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

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

这来自我在这里提出的一个问题

Match text strings of two columns on different sheet and post back using google script

我需要稍微更改一下,以便当找到not匹配时,它会回复从sheetB搜索到的值dataB[b][0]或者b我在这里感到困惑

我认为这会相对容易(也许就是这样),但我无法弄清楚

我尝试的其中一件事就是改变这一点 if (b != res.length - 1) res.push([""]);if (b != res.length - 1) res.push([b]);

另外

for (var a in dataWith) {
          if (dataWith[a][0] == dataIN[b][0]) {res.push([dataPB[a][0]]);}
          else {res.push([dataWith[b][0]]);}
      }

这部分有效,但让位给许多ruturns

我希望这很清楚

感谢您对此的任何帮助

现在输出

MatchedCol
matchedFoundValue
matchedFoundValue
matchedFoundValue

matchedFoundValue


matchedFoundValue
.
.
.

我需要的结果:

MatchedCol
matchedFoundValue
matchedFoundValue
matchedFoundValue
SearchWithvalue (no match)
matchedFoundValue
SearchWithvalue (no match)
SearchWithvalue (no match)
matchedFoundValue

。 。

function MatchColumnsAlternate(){
// gets spreadsheet A and the range of data
var sheetA =SpreadsheetApp.getActiveSpreadsheet().getSheetByName("FindReplace");
var dataA = sheetA.getRange(2, 1, sheetA.getLastRow(), 2).getValues();

// gets spreadsheet B and the range of data
var sheetB = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test");
var dataB = sheetB.getRange(2, 1, sheetB.getLastRow(), 1).getValues();

// Added
var res = [];
for (var b in dataB) {
for (var a in dataA) {
  if (dataA[a][0] == dataB[b][0]) res.push([dataA[a][1]]);
}
if (b != res.length - 1) res.push([""]);
}
sheetB.getRange(2, 2, res.length, res[0].length).setValues(res);
}

1 个答案:

答案 0 :(得分:1)

尝试更改

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

<强>与

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

<强>结果

enter image description here