- Требуется сравнить «А2» листа («Лист5») индекса 3 со значением последней строки столбца «В» для каждого листа, кроме «Лист5».
- Если значение «A2» для «Sheet5» совпадает с последним рядом столбца «B», вы хотите активировать ячейку.
Я понял, что вы хотите, как указано выше. Если мое понимание верно, как насчет этой модификации? Я думаю, что есть несколько ответов для вашей ситуации. Поэтому, пожалуйста, подумайте об этом как об одном из них.
Очки модификации:
var ShtID = sheet.getSheetId()
не имеет методов getRange()
и setActiveCell
, поскольку sheet.getSheetId()
возвращает целочисленное значение.
SchCell
не имеет значений.
- В
for ( j = 1 ; j >= lastRow; j++){
этот цикл for не зацикливается.
Модифицированный скрипт:
function Lookup() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
//Get Sheet
var sheet = ss.getSheets()[3];
//set row & column
var GCell = sheet.getRange(2, 1);
// read values from set row & column
var CValue = GCell.getValues();
Logger.log(CValue[0][0]);
// Modified part
var allsheets = ss.getSheets();
for (var s = 0; s < allsheets.length; s++) {
var sheet = allsheets[s];
if (s != 3) {
var values = sheet.getRange("B1:B").getValues().filter(String); // Retrieve values of column B
if (values.length > 0) {
var v = values[values.length - 1][0]; // Value of last row of column B
var lastRow = "B" + values.length; // Last row of column B
if (v == CValue[0][0]) {
sheet.getRange(lastRow).activate();
return true;
}
}
}
};
}
Примечание:
- В этом модифицированном сценарии, когда найдено значение, совпадающее с «A2» для «Sheet5», ячейка первого листа активируется и фокусируется.
- На данном этапе несколько ячеек каждого листа не могут быть активированы и сфокусированы одновременно.
Ссылки:
Edit:
- Вы хотите активировать все ячейки столбца «B» на первом листе, когда найдены ячейки, соответствующие «A2» в «Sheet5».
Если мое понимание верно, как насчет этого? Пожалуйста, измените измененную часть следующим скриптом.
// Modified part
var allsheets = ss.getSheets();
for (var s = 0; s < allsheets.length; s++) {
var sheet = allsheets[s];
if (s != 3) {
var values = sheet.getRange("B1:B").getValues().filter(String);
if (values.length > 0) {
var ranges = values.reduce(function(ar, e, i) {
if (e[0] == CValue[0][0]) {
ar.push("B" + (i + 1));
}
return ar;
}, []);
if (ranges.length > 0) {
Logger.log(ranges)
sheet.setActiveRangeList(sheet.getRangeList(ranges));
break;
}
}
}
};