Я собрал воедино код, который захватывает строку из активной ячейки и перебирает ее в диапазоне, пока не найдет совпадение, а затем возвращает соседнюю ячейку.Он работает так, как я хочу, но он немного медленный, и журнал показывает, что скрипт возвращает значение соседней ячейки примерно в 30 раз (я думаю, столько, сколько существует).Поскольку я собираюсь увеличить диапазон позже, эта задержка может оказаться проблемой.
Я на 90% уверен, что вы можете это исправить, просто зная, как работает оператор return (я вставил Returnоператор, а затем журнал выглядел правильно, но я понятия не имел, как на самом деле установить значение из этого оператора возврата)
//------ Step 1: Take value in activecell assuming it is in column 2 and below row 3.
function onEdit () {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var database = ss.getSheetByName("Database");
var lists = ss.getSheetByName("Studentinfo");
var activeCell = database.getActiveCell();
if (activeCell.getColumn() == 2 && activeCell.getRow() >3) {
var activeStudent = activeCell.getValue();
Logger.log(activeStudent)
}
//------ Step 2: Search lists for value of activeStudent & store value
var row = lists.getRange(4, 1,lists.getLastRow(),2).getValues();
for (var i = 0; i<row.length;i++) {
if (row[i][1] == activeStudent)
// here is probably where Return row[i][0] should be?
var studentClass = row[i][0];
Logger.log(studentClass)
}
//------ Step 3: Take the value and set it to activeCell offset (0,-1)
activeCell.offset(0,-1).setValue(studentClass);
}