@Ozdemir

Как создать таблицу, чтобы была взаимосвязь цена—кол-во—стоимость?

Например: я знаю цену и количество, то ввожу их и автоматически считается сумма, но если я знаю цену и стоимость, то должно высчитать кол-во. Если знаю стоимость и кол-во, то высчитать цену.
  • Вопрос задан
  • 173 просмотра
Решения вопроса 2
Dr_Elvis
@Dr_Elvis
В гугле забанен
делаете 3 столбца: цена, количество, сумма
после них делаете еще 3 столбца, так же цена, количество сумма.
Отличие в том что в первых трех вы вводите то, что вам известно, а во вторых трех прописаны формулы:
для цены - сумма деленная на количество
для количества - сумма деленная на цену
для суммы - цена умноженная на количество

В таком случае при вводе любых двух известных у вас во второй тройке столбцов будет посчитано остальное.
Ну и чтобы уж красиво было добавить условия на ошибку и вывод 0

E: =IF(A2="";IFERROR(C2/B2;"");A2)
F: =IF(B2="";IFERROR(C2/A2;"");B2)
G: =IF(C2="";IF(A2*B2=0;"";A2*B2);C2)

63d8fddc81cf0397558628.png
Ответ написан
oshliaer
@oshliaer Куратор тега Google Apps Script
Google Products Expert
Через скрипты можно сделать с меньшим числом ячеек, и будет куда лаконичнее. Тем более, что можно создавать более сложные расчеты

Класс

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]]);


64b19aeb57f0b767372525.gif

Пример в Таблице https://docs.google.com/spreadsheets/d/1KTNtoZqQBp...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы