я пытаюсь понять, как я могу создать событие onEdit
для следующего метода.
Пример: Column1 = значение, которое я введу для расчета Column2 (+/-) Столбец2 = Значение на основе значения ячейки (+/-) Столбец2 на основе введенного значения ячейки
Мне нужно для каждой строки a1:b1
, a2:b2
и так далее:
Когда я вхожу, например, в A1(-100)
, а B1
уже имеет значение 200
, он должен дать мне результат 100
и удалить введенное значение в A1.
То же самое для A2(+100)
и B1(50)
должно дать мне результат 150
и удалить значение в A2
.
Таким образом, конечный результат должен быть B1 = 100
и B2 = 150
и так далее.
Я пробовал это с этим кодом
function onEdit(e){
var Column1 = 1;
var Column2 = 2;
if ( e.range.getColumn() == Column1 && e.value){
e.range.setValue(e.value * e.range.offset(0, Column2 - Column1).getValue());
}
}
Но это всего лишь половина того, что мне нужно, и я застрял здесь на несколько часов. Если бы кто-нибудь мог помочь мне закончить это, было бы потрясающе.
Согласно вашему объяснению, вы хотите добавить числа.
Например:
(-100)
+ 200
дадут вам 100
.
В ваших текущих сценариях отсутствуют эти две функции:
Он не добавляет значения.
Значение в столбце A
не очищается после завершения операции.
function onEdit(e) {
const inputCol = 1;
const as = e.source.getActiveSheet(); // get active sheet
const ar = e.range;
const row = ar.getRow(); // get edited row
const col = ar.getColumn(); // get edited column
if (as.getName() == "Sheet1" && col == inputCol){
const rng = as.getRange(row,inputCol+1);
rng.setValue(parseInt(e.value)+rng.getValue());
ar.clearContent();
}
}
Я предполагаю, что вы хотите применить эту операцию к определенному листу, поэтому я добавил условие запуска кода только для Sheet1
. Если вы не хотите такого поведения, то удалите его вообще. Если вы хотите использовать другое имя листа, измените Sheet1
на имя вашего листа.
Спасибо за ваше объяснение, в чем была моя проблема, и спасибо за код!