Это многочастный вопрос: я затрудняюсь объяснить это кратко в одном ясном заявлении. Я буду стараться, чтобы очистить его после того, как получить некоторые отзывы:Найти ячейку на другой вкладке
В Google Docs, я хотел бы искать другую вкладку (в одной и той же таблицы), чтобы найти ячейку, которая содержит конкретные данные. Данные могут перемещаться, что делает невозможным использование ссылки на статические ячейки.
// если 'Лист2' моей таблицы содержит следующую ... ABCD 1 - - - - 2 - Foo бар 6 3 - - - -
//...then некоторые магическая функция вернет C2 = getCell ('Sheet2', "bar")
Теперь, когда у нас есть эта ячейка, я хочу получить значения соседних ячеек в одной строке.
// это будет возвращать "Foo": = getLeft (GetCell ('Лист2', "бар"))
// и будет возвращен 6 = GetRight (GetCell ('Лист2', " бар "))
Я смог получить функцию, которая удовлетворяет вышеуказанной задаче. Однако, это БОЛЬШО МЕДЛЕННО! Я использую эту функцию примерно в более чем 100 местах, поэтому это делает тайм-аут листа при вычислении каждый раз, когда я что-то меняю.
Может ли кто-нибудь предложить, как получить такую же функциональность, но с гораздо лучшей производительностью?
function getCell(sheetname, item, row_offset, default_string)
{
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetname);
var lastrow = sheet.getLastRow();
var lastcol = sheet.getLastColumn();
for(var c = 1; c <= lastcol; c++)
{
for(var r = 1; r <= lastrow; r++)
{
var range = sheet.getRange(r, c);
if(range.getValue() == item)
{
//item found! See if we can get the requested cell...
c = c + row_offset; //adjust column using given offset
if(c < 1 || c > lastcol)
return "E.offset";
else
return sheet.getRange(r,c).getValue();
}
}
}
return default_string;
}