Я записал макрос, используя относительные ссылки на ячейки и относительно простую стратегию присвоения (просто устанавливая содержимое = в правую ячейку для каждой из 18 ячеек).Затем я заключил это в цикл for, чтобы он повторялся.Когда я запускаю B1 и запускаю его, он делает то, что вы хотите.Ясно, что существует множество способов улучшить его, например, сделать более приятным отступ, сделать 468 чем-то похожим на число строк или объяснить в комментарии, что такое 18.Вы можете даже переписать макрос, записанный с помощью цикла for.Но это должно помочь вам начать.
function SOrevSheetRange() {
var spreadsheet = SpreadsheetApp.getActive();
var i;
for (i=0; i<468/18; i++){
spreadsheet.getCurrentCell().setFormulaR1C1('=R[17]C[-1]');
spreadsheet.getCurrentCell().offset(1, 0).activate();
spreadsheet.getCurrentCell().setFormulaR1C1('=R[15]C[-1]');
spreadsheet.getCurrentCell().offset(1, 0).activate();
spreadsheet.getCurrentCell().setFormulaR1C1('=R[13]C[-1]');
spreadsheet.getCurrentCell().offset(1, 0).activate();
spreadsheet.getCurrentCell().setFormulaR1C1('=R[11]C[-1]');
spreadsheet.getCurrentCell().offset(1, 0).activate();
spreadsheet.getCurrentCell().setFormulaR1C1('=R[9]C[-1]');
spreadsheet.getCurrentCell().offset(1, 0).activate();
spreadsheet.getCurrentCell().setFormulaR1C1('=R[7]C[-1]');
spreadsheet.getCurrentCell().offset(1, 0).activate();
spreadsheet.getCurrentCell().setFormulaR1C1('=R[5]C[-1]');
spreadsheet.getCurrentCell().offset(1, 0).activate();
spreadsheet.getCurrentCell().setFormulaR1C1('=R[3]C[-1]');
spreadsheet.getCurrentCell().offset(1, 0).activate();
spreadsheet.getCurrentCell().setFormulaR1C1('=R[1]C[-1]');
spreadsheet.getCurrentCell().offset(1, 0).activate();
spreadsheet.getCurrentCell().setFormulaR1C1('=R[-1]C[-1]');
spreadsheet.getCurrentCell().offset(1, 0).activate();
spreadsheet.getCurrentCell().setFormulaR1C1('=R[-3]C[-1]');
spreadsheet.getCurrentCell().offset(1, 0).activate();
spreadsheet.getCurrentCell().setFormulaR1C1('=R[-5]C[-1]');
spreadsheet.getCurrentCell().offset(1, 0).activate();
spreadsheet.getCurrentCell().setFormulaR1C1('=R[-7]C[-1]');
spreadsheet.getCurrentCell().offset(1, 0).activate();
spreadsheet.getCurrentCell().setFormulaR1C1('=R[-9]C[-1]');
spreadsheet.getCurrentCell().offset(1, 0).activate();
spreadsheet.getCurrentCell().setFormulaR1C1('=R[-11]C[-1]');
spreadsheet.getCurrentCell().offset(1, 0).activate();
spreadsheet.getCurrentCell().setFormulaR1C1('=R[-13]C[-1]');
spreadsheet.getCurrentCell().offset(1, 0).activate();
spreadsheet.getCurrentCell().setFormulaR1C1('=R[-15]C[-1]');
spreadsheet.getCurrentCell().offset(1, 0).activate();
spreadsheet.getCurrentCell().setFormulaR1C1('=R[-17]C[-1]');
spreadsheet.getCurrentCell().offset(1, 0).activate();
}
};
Как я отмечал в предыдущем комментарии, всю эту задачу можно выполнить без макроса, но я понимаю, что вы хотите привыкнуть к макросам, поэтому ядаю этот ответ.Пересмотр: меня беспокоило, как долго это было, поэтому я переписал то, что было записано как цикл.Это выглядит так:
function SOrevSheetRange() {
var spreadsheet = SpreadsheetApp.getActive();
var i;
var j;
for (i = 0; i < 468 / 18; i++) {
for (j = 0; j < 18; j++) {
spreadsheet.getCurrentCell().setFormulaR1C1('=R[' + (17 - 2 * j) + ']C[-1]');
spreadsheet.getCurrentCell().offset(1, 0).activate();
}
}
};