Получить строку из выделенной в данный момент ячейки в таблицах Google

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

Я поместил это в строку 1 скрытого столбца для диапазона моего списка проверки данных: =SORT(UNIQUE(FILTER(C3:C,A3:A=C1,NOT(ISBLANK(C3:C)))))

Он работает отлично, за исключением того, что мне нужно вручную обновить значение в C1 текущим значением столбца A. Неоптимально. Я хочу, чтобы условие A3:A=C1 было A3:A=C + CURRENTROW(), где CURRENTROW() - это любая функция или пользовательская функция, которая будет возвращать, как вы уже догадались, текущую строку. Я не могу найти ничего, что дало бы мне текущую ячейку или текущую строку. Я пробовал следующие пользовательские функции:

function CURRENTROW() { 
  return  SpreadsheetApp.getActiveSheet().getActiveRange().getRow(); 
}

function CURRENTROW() { 
  return  SpreadsheetApp.getActiveSheet().getActiveCell().getRow();
}

function CURRENTROW() {
  return  SpreadsheetApp.getActiveSheet().getCurrentCell().getRow();
}

Все 3 варианта возвращают номер строки ячейки, содержащей функцию, но мне нужен номер строки, в которой в данный момент находится пользователь. Кто-нибудь может показать мне, как получить это значение? Любая помощь здесь приветствуется.


person David Heylen    schedule 11.10.2019    source источник
comment
Предоставьте пример таблицы.   -  person PySeeker    schedule 11.10.2019


Ответы (2)


Основываясь на вашей небольшой информации, вы можете сделать что-то вроде этого, но работает только после редактирования в столбце c и обновит номер в D1:

function onEdit(e) {
  if (SpreadsheetApp.getActiveSheet().getActiveRange().getColumn()==3){
    var rownum = SpreadsheetApp.getActiveSheet().getActiveRange().getRow()
    SpreadsheetApp.getActiveSheet().getRange('D1').setValue(rownum); 
  }
}
person PySeeker    schedule 11.10.2019

В вашем случае подойдет следующий код:

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Custom Menu')
      .addItem('Custom function', 'custom')
      .addToUi();
}

function custom() {
  var currentRow = SpreadsheetApp.getActiveSheet().getActiveCell().getRow();
  var formula = "=SORT(UNIQUE(FILTER(C3:C,A3:A=C" + currentRow + ",NOT(ISBLANK(C3:C)))))";
  SpreadsheetApp.getActive().getRange("A1").setValue(formula);
}

Что он делает, так это устанавливает формулу, которую вы хотите в ячейке A1 (которую вы можете изменить по своему усмотрению в последней строке). Чтобы вызвать функцию, она устанавливается в раскрывающемся меню, когда вы открываете свой лист, и после выбора ячейки, на которую вы хотите ссылаться, вам просто нужно щелкнуть по ней.

person carlesgg97    schedule 11.10.2019