Получить строку из выделенной в данный момент ячейки в листах Google - PullRequest
1 голос
/ 11 октября 2019

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

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

Работает отлично, за исключением того, что мне приходится вручную обновлять значение в C1 текущим значением столбца A. Sub-оптимальный. Я хочу, чтобы условие 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 варианта возвращают номер строки ячейки, в которой находится функция, но я хочу номер строки, в которой в данный момент находится пользователь. Может кто-нибудь показать, пожалуйста, как получить это значение? Любая помощь здесь с благодарностью.

Ответы [ 2 ]

0 голосов
/ 11 октября 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 (которую вы можете изменить по своему усмотрению в последней строке). Чтобы вызвать функцию, она устанавливается в раскрывающемся меню при открытии листа, и после выбора ячейки, на которую вы хотите сослаться, вам просто нужно нажать на нее.

0 голосов
/ 11 октября 2019

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

function onEdit(e) {
  if (SpreadsheetApp.getActiveSheet().getActiveRange().getColumn()==3){
    var rownum = SpreadsheetApp.getActiveSheet().getActiveRange().getRow()
    SpreadsheetApp.getActiveSheet().getRange('D1').setValue(rownum); 
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...