2016-02-04 22 views
1

如何獲取包含我正在查找的值的單元格的行索引和列索引?獲取找到值的行和列索引

這裏有兩片, 「螢火蟲之墓」 和 「Data_grave」 的例子:

Grave sheetData_grave sheet

我的代碼,下面,應該...

  • 首先,得到一個特定的值在表格「墳墓」(例如值 - 「贏」)。
  • 在表格「Data_grave」中找到具有此值的行&列的編號。
  • 最後,它應該在找到的值「Win」(從列+1)附近寫入一些數據(「哇」)。

不過,我收到的第17行(線下我的搜索環路)的錯誤信息:

無法轉換到4,4(類)

怎麼辦我解決這個問題?

function myFind() { 
    var ss = SpreadsheetApp.getActive(), rowNum = [], collNum = []; 
    var findData = ss.getSheetByName('Grave').getRange("A2").getValue(); 
    var searchData = ss.getSheetByName('Data_grave').getDataRange().getValues(); 

    for(var i=1, iLen=findData.length; i<iLen; i++) { 
    for(var j=0, jLen=searchData.length; j<jLen; j++) { 
     for(var k=0, kLen=searchData[0].length; k<kLen; k++) { 
     var find = findData; 
     if(find == searchData[j][k]) { 
      rowNum.push([j+1]); 
      collNum.push([k+2]); 
     } 
     } 
    } 
    } 
    ss.getSheetByName('Data_grave').getRange(rowNum,collNum).setValue("wow"); 
} 
+0

'rowNum'和'collNum'現在是'數組',所以你不能在'getRange()'方法中使用'數組'。你只需要使用數字。 – Adelin

+0

好吧..但如何獲得行數和列數?我的意思是,我可以將數組轉換爲數字嗎? – Twil

+0

您是否期待不止一個結果?如果不是,則不要'push()'數組中的值,只需將其保存在一個變量中即可。如果是的話,可以將結果存儲在一個數組中,但是您需要再次遍歷數組,所以您可以在每個**「Win」列附近放置「一些數據」。 – Adelin

回答

1

由於Adelin評論:該錯誤消息表明您不使用.getRange(rowNum,collNum)正常。 That method expects two numbers,但你提供了兩個數組。

當你「發現」您搜索的,而不是push()(它把rowNumcolNum數組)的細胞,只需要用:

var rowNum = j+1; 
var colNum = k+2; 

您也可以使用boolean found作爲所有循環的附加退出條件,在成功時停止搜索。

function myFind() { 
    var ss = SpreadsheetApp.getActive(), rowNum = [], collNum = []; 
    var findData = ss.getSheetByName('Grave').getRange("A2").getValue(); 
    var searchData = ss.getSheetByName('Data_grave').getDataRange().getValues(); 

    var found = false; 
    for(var i=1, iLen=findData.length; i<iLen && !found; i++) { 
    for(var j=0, jLen=searchData.length; j<jLen && !found; j++) { 
     for(var k=0, kLen=searchData[0].length; k<kLen && !found; k++) { 
     var find = findData; 
     if(find == searchData[j][k]) { 
      var rowNum = j+1; 
      var collNum = k+2; 
      found = true; 
     } 
     } 
    } 
    } 
    ss.getSheetByName('Data_grave').getRange(rowNum,collNum).setValue("wow"); 
} 
+0

是的,感謝您的更正) – Twil