Я пытаюсь использовать макросы в листах Google для автоматизации установки формулы, делая абсолютную ссылку на одну ячейку и, наконец, автоматически заполняя эту формулу. Как можно использовать appscript, чтобы автоматизировать это для меня?
Я записываю макрос с формулой и тем, что я хочу, чтобы код делал, затем я возиться с ним. Я пробовал зацикливать код, но он просто копирует и вставляет точную формулу, когда мне нужно, чтобы она основывалась на одной абсолютной ячейке и изменялась при вставке вниз. Я попытался использовать две разные функции: одну, которая записывает код в нужное мне место, а другую, которая копирует ячейку с ячейкой формулы 1 и заполняет эту формулу.
прямо сейчас этот код выглядит так: (обратите внимание, этот код не имеет автозаполнения)
'' '
function setprice() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getCurrentCell().offset(1, 4).activate()
.setFormulaR1C1('=vlookup(R[0]C[-4],INDIRECT(R2C2&1),2)');
spreadsheet.getCurrentCell()
.setFormulaR1C1('=vlookup(R[0]C[-4],IND'''
IRECT(R[-1]C[-4]&1),2)'); };
'' '
Итак, когда это лист, он выглядит так:
=vlookup(B3,INDIRECT(B2&1),2)
Когда он автоматически заполняется, он меняется следующим образом:
=vlookup(B3,INDIRECT(B2&1),2)
=vlookup(B4,INDIRECT(B3&1),2)
=vlookup(B5,INDIRECT(B4&1),2)
=vlookup(B6,INDIRECT(B5&1),2)
и мне нужно, чтобы это изменилось так:
=vlookup(B3,INDIRECT($B$2&1),2)
=vlookup(B4,INDIRECT($B$2&1),2)
=vlookup(B5,INDIRECT($B$2&1),2)
=vlookup(B6,INDIRECT($B$2&1),2)
другой код, который я устал, выглядит так
'' '
function fillin() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getCurrentCell().
setFormulaR1C1('=vlookup(R[0]C[-4],INDIREC
T(R2C2&1),2)');
spreadsheet.get
var destinationRange = spreadsheet.getActiveRange().offset(0, 0,
14);
spreadsheet.getActiveRange().autoFill(destinationRange,
SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
spreadsheet.getCurrentCell().offset(0, 0, 14, 1).activate();
};
''»
Этот код, когда он используется в разностной ячейке для поиска (например, я хочу использовать B8 вместо B2), код будет таким же, как и выше, когда я запусту, он получит абсолютное значение.
Лист, в котором я работаю, имеет раскрывающийся список и зависимый раскрывающийся список в том же столбце. У одного есть названия листов, а у другого есть пункты в этих листах. У меня настроен код, поэтому, когда я выбираю имя листа, второй выпадающий список автоматически заполняется ниже пунктами.
Когда запускается функция setprice, мне нужно выбрать смещение активной ячейки (которое имеет имя листа) относительно правильной ячейки и вставить формулу, используя «ячейку имени листа» и ячейку поискового значения (элемента). Затем он мне нужен, чтобы превратить «ячейку с именем листа» в абсолютную и заполнить ее, так что значение поиска изменится, но «ячейка с именем листа» останется прежней.
Прямо сейчас, когда я запускаю любой из этих кодов. Он либо возвращает все как относительные ячейки, либо возвращает «ячейку с именем листа» как абсолют (например: я хочу, чтобы «ячейка с именем листа» исходила из активной ячейки при запуске кода. Если эта ячейка будет B8, моя формула будет все еще выглядит так,
= ВПР (В9, ДВССЫЛ ($ B $ 2 и 1), 2)
когда я хочу, чтобы это выглядело так
= ВПР (B3, ДВССЫЛ ($ B $ 8 & 1), 2)
Я знаю, что это также может быть полным обходом и я открыт для любых других менее запутанных решений. Но это должен быть код, чтобы он мог запускаться и автоматически заполняться нажатием кнопки. Большое спасибо!