2016-11-16 20 views
0

Google Apps Scriptを使用するGoogleシートでは、セルR33の値を検索文字列(簡単)として取得し、その検索文字列の次のインスタンスをS:S私は困惑しています)、値が見つかった(簡単な)セルをアクティブにします。特に、私は単純な検索(本質的にvlookup)を行う方法を理解することはできません。私は列をループし、このように比較しようとしました:検索文字列を使用してセルを検索する

function Vlookupscript(name, sheet, columnIndexWithNames, rowIndexToStart) {  
    var maxRows = sheet.getLastRow() - 1; 
    var range = sheet.getRange(rowIndexToStart, columnIndexWithNames, maxRows); 
    var numRows = range.getNumRows(); 
    var index = -1; 
    var cell; 
    var value; 

    for (var i = 1; i <= numRows; i++) { 
    cell = range.getCell(i, 1); 
    value = cell.getValue(); 
    if (value === name) { 
     index = i; 
    } 
    } 
    return index; 
} 

ここで、nameは検索する値です。

しかし、ループの最後でも、出力が全く得られません。logger.log(i)を使用しています。私はもっ​​と簡単な方法があると確信しています。たとえば、列を配列としてロードしてその配列を検索し、インデックスを取得してから対応するインデックスでセルをアクティブにできますか?

答えて

2

もっと速い方法があります。現在、値を確認するたびにSpreadsheetAppを呼び出していますが、時間がかかります。まず第一に、あなたはおそらくmaxRows = sheet.getLastRow()をして、- 1を取り除いてください。

私はあなたが検索したい値であることを告げるでしょう。だから、あなたは、次

values = SpreadsheetApp.getActiveSheet().getRange('S:S').getValues() 
for (i = 0; i = values.lenght; i++){ 
    if (values[i][0] == name) { 
    sheet.getRange(i+1, 19).activate() 
    return 
    } 
} 

を行うことができます。また、

values = SpreadsheetApp.getActiveSheet().getRange(1,19,maxRows-1,1).getValues()

との値は、あなたがmaxRows変数の- 1を失うように変更することを提供しますことができます。これはすべての値を通過し、値が一致するとセルをアクティブに設定します

関連する問題