7

Лист сотрудника содержит имя сотрудника в ячейке C2. Имя сотрудника также должно быть указано в листе данных в диапазоне B3: B153.Найти подходящую ячейку и вернуть номер ячейки

Как я могу получить рулонную ячейку ячейки в листе данных, который соответствует имени сотрудника?

Я пробовал следующий скрипт, но он, похоже, не работает.

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

Вот код

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; 
    } 
    } 
} 

Если вы хотите, чтобы выполнить этот вид LookUp лучше получать данные с sheet.getDataRange(). GetValues ​​(), так как в этом случае вы получите данные как таблица значений, это быстрее. Когда вы используете стандартный EmployeeSheet.getRange (2,3,1,1) .getValue(), на самом деле вы извлекаете объект, для которого требуется больше времени для обработки, и каждый раз, когда вы запрашиваете электронную таблицу.

В моем примере я сделал только один запрос для извлечения всех данных вместо запроса n, чтобы каждый раз получать данные.

Stéphane

+0

Я получаю сообщение об ошибке: ERRORTYPE: Не удается прочитать атрибут '1' с неопределенным. Вы знаете, как я могу это решить? – LennartB

+0

Скрипт должен запускаться из сценария à в табличной таблице, а не в автономном скрипте. Если автономный скрипт изменит var sheet = SpreadsheetApp.openById («IDofSpreadsheet»); – St3ph

+0

Извините var sheet = SpreadsheetApp.openById ("IDofSpreadsheet"). GetSheetByName ("NameOfTheSheet"); – St3ph