Получить строку из выделенной в данный момент ячейки в таблицах 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 варианта возвращают номер строки ячейки, содержащей функцию, но мне нужен номер строки, в которой сейчас находится пользователь. Кто-нибудь может показать мне, как получить это значение? Любая помощь здесь приветствуется.
2 ответа
Основываясь на вашей небольшой информации, вы могли бы сделать что-то вроде этого, но работает только после редактирования в столбце c и обновит номер в D1:
function onEdit(e) {
if (SpreadsheetApp.getActiveSheet().getActiveRange().getColumn()==3){
var rownum = SpreadsheetApp.getActiveSheet().getActiveRange().getRow()
SpreadsheetApp.getActiveSheet().getRange('D1').setValue(rownum);
}
}
В вашем случае подойдет следующий код:
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 (которую вы можете изменить по своему усмотрению в последней строке). Чтобы вызвать функцию, она устанавливается в раскрывающемся меню, когда вы открываете свой лист, и после выбора ячейки, на которую вы хотите ссылаться, вам просто нужно щелкнуть по ней.