7

従業員シートにはセルC2の従業員の名前が含まれています。従業員の名前は、B3:B153の範囲のデータシートにも記載する必要があります。セル照合値を検索してRownumberを返す

従業員の名前と一致するデータシートのセルの山数を取得するにはどうすればよいですか?

次のスクリプトを試しましたが、うまくいかないようです。ここで

var Sheet = SpreadsheetApp.getActive(); 
    var Employeesheet = Sheet.getSheetByName('Employee') 
    var DataSheet = Sheet.getSheetByName('Data'); 
    var Column = Sheet.getRange(3,2,151,1); 
    var Values = column.getValues(); 
    var Row = 0; 

    while (Values[Row] && Values[Row][0] !=(EmployeeSheet.getRange(2,3,1,1).getValue())) { 
    Row++; 
    } 

    if (Values[Row][0] === (EmployeeSheet.getRange(2,3,1,1).getValue())) 
    return Row+1; 
    else 
    return -1; 

    } 

答えて

6

コードあなたはsheet.getDataRange()を使用してデータを取得するために優れているルックアップのこの種を実行したい

function rowOfEmployee(){ 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 
    var data = sheet.getDataRange().getValues(); 
    var employeeName = sheet.getRange("C2").getValue(); 
    for(var i = 0; i<data.length;i++){ 
    if(data[i][1] == employeeName){ //[1] because column B 
     Logger.log((i+1)) 
     return i+1; 
    } 
    } 
} 

。でgetValues()このケースでは、データを取得するため、値のテーブルとしてこれはより速いです。実際には、標準のEmployeeSheet.getRange(2,3,1,1).getValue()を使用すると、処理する時間とスプレッドシートをクエリするたびに時間がかかるオブジェクトを取得します。

私の例では、毎回1つのデータを取り出す代わりに、すべてのデータを検索するクエリを1つだけ作成しました。

ステファン

+0

エラーが発生しました:Errortype:属性 '1'を未定義から読み取ることができません。私はそれをどのように解決できるか知っていますか? – LennartB

+0

スクリプトは、スタンドアロンスクリプトではなくスプレッドシート内のスクリプトから起動する必要があります。スタンドアロンスクリプトの変更の場合は、var sheet = SpreadsheetApp.openById( "IDofSpreadsheet"); – St3ph

+0

申し訳ありませんvar sheet = SpreadsheetApp.openById( "IDofSpreadsheet")。getSheetByName( "NameOfTheSheet"); – St3ph

関連する問題