Через скрипты можно сделать с меньшим числом ячеек, и будет куда лаконичнее. Тем более, что можно создавать более сложные расчеты
Класс
class Recalculator {
constructor(calcs) {
this.calcs = calcs;
}
calc(params, fix) {
if (params.filter((p) => p === '' || isNaN(p)).length > 1)
return params.map((p) => (isNaN(p) || p === '' ? '' : Number(p)));
const index = params.map((p) => (isNaN(p) || p === '' ? '' : Number(p))).findIndex((p) => p === '');
if (index === -1) return params.map((v, i) => (i === fix ? v : ''));
const res = this.calcs[index](params);
const out = [...params];
out[index] = Number.isInteger(res) ? res : Number(res).toFixed(2);
return out;
}
}
Применение
const recalc = new Recalculator([([_, b, c]) => c - b, ([a, _, c]) => c - a, ([a, b, _]) => a + b]);
const range = sheet.getRange('B3:F3');
const [a, _, b, __, c] = range.getValues()[0];
const params = [a, b, c];
const [a1, b1, c1] = recalc.calc(params, fix);
range.setValues([[a1, _, b1, __, c1]]);
Пример в Таблице
https://docs.google.com/spreadsheets/d/1KTNtoZqQBp...