2015-08-29 170 views
1

我正在尋找一種方法來搜索範圍內的字符串並獲取單元格一旦找到的位置。
這是我用來查找的行數查找包含特定字符串的單元格的位置

var ss = SpreadsheetApp.getActiveSheet(); 
var values = ss.getRange("B:B").getValues(); 
var i=rownum=0; 
for(i=0;i<values.length;i++) { 
    if(values[i]=='string') rownum=i+1; 

然後我用下面的代碼,以查找列數

var colvalue; 
for (j=1;j<ss.getLastColumn();j++) { 
if (ss.getRange(3,j).getValue() == "string" { 
colvlaue = j; 
    } 
} 

是有辦法的範圍內同時搜索整個行和列它包含一個特定的字符串並在找到它時返回它的單元格位置?

+0

肖恩:你想在一列中查找字符串(如你的代碼似乎暗示)或多列? – JPV

+0

我正在尋找讓它搜索包含字符串的單元格的多行和多列。所以基本上要經過一個範圍內的每個細胞。 –

回答

3

您需要使用嵌套for循環。這段代碼將做到這一點:

function findValueInRange() { 
    var ss = SpreadsheetApp.getActiveSheet(), 
     theLastColumn = ss.getLastColumn(), 
     theLastRow = ss.getMaxRows(); 

    //Returns a two dimensional array of both rows and columns 
    var values = ss.getRange(1,1,theLastRow,theLastColumn).getValues(); 

    var i=0, 
     rownum=0, 
     thisRow, 
     colvalue, 
     whatToFind = "name3", 
     j=0; 

    for(i=0;i<values.length;i++) { 
    thisRow = values[i]; 

    for (j=1;j<thisRow.length;j++) { 
     colvalue = thisRow[j]; 
     if (colvalue === whatToFind) { 
     Logger.log("The string is in row: " + (i + 1) + " and column: " + (j+1)); 
     }; 
    }; 
    }; 
}; 
+0

謝謝你,上面的代碼得到了我所尋求的結果。我不知道在這裏問是否合適,但有沒有辦法搜索部分字符串而不是精確匹配? –

+1

是的,您可以使用RegEx。 [Documentation](http://www.w3schools.com/jsref/jsref_obj_regexp.asp)另見[stackoverflow部分匹配javascript](http://stackoverflow.com/questions/9060979/javascript-regex-partial-match?rq = 1) –

+0

我閱讀了關於RegEx的文檔,但我仍然無法弄清楚如何在代碼中實現它以使其成爲部分字符串搜索。 –

相關問題