Как еще я могу обновить пользовательскую функцию? - PullRequest
0 голосов
/ 12 октября 2018

Я много чего перепробовал.Пока это лучший способ для меня.Это работает, но это все еще меня беспокоит.

У меня есть пользовательская функция, которая ищет цену на основе указанного имени.Фиктивный параметр ничего не делает в пользовательской функции.

Электронная таблица обновляет пользовательскую функцию, как только значения цен в базе данных, называемые "Цены", изменяются.Потому что пустышка.

Вот как я запускаю пользовательскую функцию в ячейке

=searchPrice(B9,Prices!D:D)

Проблема заключается в том, что он проверяет весь столбец в "Цены" и обновляет / загружаетвсе клетки / пользовательские функции.Есть ли другой способ обновить пользовательскую функцию, чтобы она меняла значение для каждой ячейки?

Другими словами, я не хочу смотреть на весь столбец.Я хочу посмотреть на конкретный столбец, и если он изменится, обновите.

//Search Price sheet with the given name. Return price. dummy param updates google ss once the "Prices" sheet values changed.
function searchPrice(name,dummy)
{
  var SPREADSHEET_NAME = "Prices";
  var SEARCH_COL_IDX = 2;//Column with Names
  var RETURN_COL_IDX = 3;//Column with prices
  var values = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SPREADSHEET_NAME).getDataRange().getValues();
  for (var i = 0; i < values.length; i++)
  {
    var col = values[i];
    if (col[SEARCH_COL_IDX] == name)
    {
      return col[RETURN_COL_IDX];
    }
  }
}

1 Ответ

0 голосов
/ 12 октября 2018

Ваша пользовательская функция по сути реплицирует встроенную функцию VLOOKUP:

=VLOOKUP(B9,Prices!C:D,2,0)

Если у вас есть список имен в B9: B15, используйте версию ARRAY:

=ARRAYFORMULA(VLOOKUP(B9:B15,Prices!C:D,2,0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...