如何在谷歌电子表格中应用多循环

时间:2017-08-17 05:19:19

标签: javascript google-apps-script

我有简单循环的想法,例如,如果我在“A1”=“c”中有一个单元格值,并且我想要在“B:B”中匹配另一组值。

var lastRow = targetSheet.getLastRow();
var match = sheet.getRange("A1").getValue();

var dataRange = targetSheet.getRange(B1:B5).getValues(); //doubt here too
for(var i=0;i<dataRange.length;i++) {

    if(dataRange[i][0] == match) 
{ Do something }
                        }

    A     B
------------
1   c     x
2         c
3         b

但是,如果我有多个要匹配的值,我对如何执行相同操作的想法非常少。

    A     B
1   z     x
2   x     c
3   c     b
4   v
5   b

感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

如果我理解正确,你想循环遍历列A,如果那里有设定值,你想在列B中寻找相同的值。这是一个循环内部循环的简单问题。我们假设您有1个数组中的2列

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet()
  var values = sheet.getRange(1, 1, sheet.getLastRow(), 2).getValues() //this will get columns A and B until the last row with data into a 2D array

  var i, ii;

  for (i = 0; i < values.length; i++) {
    if (values[i][0] == '') break;  // if first column is empty we stop looking for the next one, you can get rid of this

    for (ii = 0; ii < values.length; ii++) {
      if (values[ii][1] == '') break; //if last entry reached we stop, same as before

      if (values[i][0] == values[ii][1]) {
        /* This is the part where you do what you want
        to do when you find a match, for example change background to red */
        sheet.getRange(ii + 1, 2).setBackground('red')
      }
    }
  }
}

编辑:根据请求者我修改了该功能。这基本上是你if语句中的一个区别,因为我们现在只关心检查B列中是否存在某些内容,我们在第一个循环中不再需要if。我放在那里的是你打算让A组中有3个条目的情况,但是B列中有7个条目。反向情况也是如此。否则,您可以在if语句后立即删除for语句。之所以这样做是因为getLastRow()将占据工作表上数据的最后一行。请注意,如果A列中只有3个值,B列中只有7个,但是您的值为C10,那么getLastRow() = 10