@AnryDeyvin

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

Грубо говоря, нужно сделать так, чтобы при вводе числа в конкретную ячейку, это число прибавлялось автоматически к другой ячейке и исчезало. И так, до бесконечности, я ввожу числа в одну и ту же ячейку, из нее они исчезают, а в другой ячейке прибавляются.

В принципе, подойдет и другое решение. Задача просто заключается в том, что периодически партнерам компании платится конкретная сумма. Нужно сделать так, чтобы мы видели сумму всего, что заплатили, но при этом таблица не становилась огромным реестром из тысячи значений оплаты.
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
moryachello
@moryachello
Всего понемножку, много не бывает.
В ячейке B1 введите формулу: =SUMIF(A1:A; "<>";A1:A) - тут будет собираться сумма платежей
Ячейка A1 для ввода платежей
В Расширения -> AppsScript вставляем :
function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  var range = e.range;
  
  if(range.getA1Notation() === "A1" && sheet.getName() === "Лист1") { //здесь A1 - ячейка, в которой происходит ввод, а Sheet1 - имя листа, на котором находится таблица
    var value = range.getValue();
    range.clearContent();
    
    var sumRange = sheet.getRange("B1"); //здесь B1 - ячейка, в которую нужно добавлять значения
    var sumValue = sumRange.getValue();
    
    sumRange.setValue(sumValue + value);
  }
  if(range.getColumn() == 1 && range.getRow() == 1 && range.getValue() == '') {
    sheet.getRange('A1').activate();
  }
}


скрипт очищает значение А1 после "ввода" и возвращает фокус на эту ячейку
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ProgrammerForever
@ProgrammerForever Куратор тега Google Sheets
Учитель, автоэлектрик, программист, музыкант
При интенсивном вводе часть событий onEdit может пропускаться. Если это просто индикатор "плюс-минус-лапоть", то можно так и сделать. Иначе можно просто потерять часть данных. Лучшее решение: всё-таки держать реестр операций; таблица может содержать миллионы ячеек, да и лист можно скрыть с глаз, если мешает.
Заготовка кода для onEdit() триггера

/**
 * Возникает при изменении ячейки
* @param {e} event event-объект https://developers.google.com/apps-script/guides/triggers/events?hl=ru
 * [ ProgrammerForever (c) 2020 ]
 * @return Не возвращает значений
 */
function onEdit(event) {
  var ss = event.source.getActiveSheet();//Текущий лист
  var address = event.range.getA1Notation().toUpperCase();//Адрес ячейки
  var row = event.range.getRow();      //Номер строки
  var col = event.range.getColumn();  //Номер столбца
  var newValue = event.value;            //Новое значение
  var oldValue = event.oldValue;        //Старое значение
  var userEmail = event.user.getEmail();//Пользователь(работает только при вручную назначенном триггере)
  
  //Делаем что-то
};

Ответ написан
Комментировать
Ваш ответ на вопрос

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

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