Я хочу изменить номер ячейки внутри формулы в зависимости от того, где он находится.
Пользователь листа с моим скриптом может щелкнуть пункт меню, чтобы добавить макет, который содержит набор формул. Но когда я запускаю свой скрипт, ячейки, в которых находится моя формула, не изменяют ссылку на ячейку в зависимости от того, где пользователь добавил макет.
Я также ищу способ предустановки макета с 5 строками, 10 строками и 15 строками, которые будут иметь формулы расчета.
Таким образом, когда пользователь активирует ячейку A1 и входит в меню, он / она может выбрать, хотят ли они 5, 10, 15 строк для добавления элементов.
Это будет сценарий на листе для расчета стоимости продуктов не только того, сколько стоит приготовить рецепт, но и того, сколько нужно оценить, чтобы не потерять деньги.
Я не нашел ни одного ответа ни в Интернете, ни через Youtube, чтобы указать мне правильное направление. Я искал ответы на вопрос https://developers.google.com/apps-script/reference/script/ и до сих пор не могу понять, как сделать так, как я хочу.
\\\ function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Kalkyle')
.addItem('Sett inn layout', 'layout')
.addSeparator()
.addItem('Ny Kalkyle', 'nyKalkyle')
.addToUi();
}
function nyKalkyle() {
var sheet = SpreadsheetApp.getActiveRange();
var numFormat = sheet.setNumberFormat("0.00 KR");
var range = "Navn:";
var range1 = "Salgspris:";
var range2 = "Varenummer";
var range3 = "Varenavn";
var range4 = "Pris pr kg";
var range5 = "Pris pr gr";
var range6 = "Svinn %";
var range7 = "Vår mengde";
var range8 = "Råvarekostnad";
var range9 = "Varekost";
var range10 = "";
// OppskriftNavn
sheet.setValue(range);
// SalgsPris
sheet.offset(0, 3).setValue(range1);
// Råvarekostnad
sheet.offset(1, 3).setValue(range8);
// Formel Råvarekostand
sheet.offset(1, 4).setFormula('=sum(G9:G15)').setNumberFormat("#,## kr");
Диапазон (G9: G15) должен изменяться в зависимости от того, куда передается макет. Он передается пользователем в активной ячейке, когда он / она нажимает «Ny kalkyle
// Varekost
sheet.offset(0, 5).setValue(range9);
// Formel Varekost
sheet.offset(0, 6).setFormula('=E4/E3');
// Varenummer
sheet.offset(4, 0).setValue(range2).setBackground("lightgray");
// Formel Finn varenummer
sheet.offset(6, 0).setFormula('=ArrayFormula(IFERROR(UNIQUE(Query(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1PagM-gaCoKXV012t-AzaTsk5o3GUd0YGXeXOSECSWVo/edit#gid=0";"A2:C");"Select Col1 where Col2=\'"&B9&"\'"))))');
Диапазон («B9») должен меняться в зависимости от того, куда передается макет. Он передается пользователем в активной ячейке, когда он / она нажимает «Ny kalkyle»
// Varenavn
sheet.offset(4, 1).setValue(range3).setBackground("lightgray");
// Pris pr kg
sheet.offset(4, 2).setValue(range4).setBackground("lightgray");
Диапазон («B9») должен меняться в зависимости от того, где передан макет. Он передается пользователем в активной ячейке, когда он / она нажимает «Ny kalkyle»
// Formel Finn KG pris
sheet.offset(6, 2).setFormula('=ArrayFormula(IFERROR(UNIQUE(Query(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1PagM-gaCoKXV012t-AzaTsk5o3GUd0YGXeXOSECSWVo/edit#gid=0";"A2:E");"Select Col3 where Col2=\'"&B9&"\'"))))').setNumberFormat("#,## kr");
// Pris pr gr
sheet.offset(4, 3).setValue(range5).setBackground("lightgray");
// Formel Pris pr gr
sheet.offset(6, 3).setFormula('=C9/1000');
// Svinn %
sheet.offset(4, 4).setValue(range6).setBackground("lightgray");
// Formel svinn
sheet.offset(6, 4).setNumberFormat("#,###%");
// Vår mengde
sheet.offset(4, 5).setValue(range7).setBackground("lightgray");
// Råvarekostnad
sheet.offset(4, 6).setValue(range8).setBackground("lightgray");
Диапазон внутри setFormula должен меняться в зависимости от того, где передан макет. Он передается пользователем в активной ячейке, когда он / она нажимает «Ny kalkyle»
// Formel Råvarekostnad
sheet.offset(6, 6).setFormula('=ArrayFormula(IF(C9;D9*F9+(E9/1*D9*F9);""))').numFormat;
}
Я хочу, чтобы ссылки на каждую ячейку менялись, когда пользователь решил добавить их в макет.
Если у него / нее активирована ячейка A1, ссылка на ячейку должна указывать правильные ячейки внутри формул.
То же самое, если у него / нее активирована ячейка A25.
Но в зависимости от моего сценария он не изменяется, и это делает его таким, чтобы вычисление не складывалось правильно, а затем пользователь должен изменить ячейку ref каждый раз, когда передается макет, и это делает мой сценарий таким бессмысленно.
EDIT
После помощи вас в этом сообществе и большого количества поисков в Google я получил результат, который работает так, как я видел для себя. Теперь осталось найти способ добавить выпадающий список с диапазоном так же, как проверка данных
Вот сценарий, с которым я закончил https://pastebin.com/TBw86PtK