Как передать значение ячейки в функцию СУММ - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь вычислить СУММ последних 12 строк в столбце (я добавлю больше строк в этот столбец, чтобы автоматизировать расчет).

Прежде всего, я могу получить значение последней ячейки с некоторым значением в этом столбце по =SUMPRODUCT(MAX((B1:B200<>"")*ROW(B1:B200))) - результат сохраняется в C1. Однако я не уверен, как использовать это значение в формуле SUM, я думал что-то вроде =SUM(B(get value of C1)-12:B(get value of C1).

Я пробовал несколько вещей, но ни одна из них не сработала - я также не против использования другой подход, если он выполняет свою работу.

Ответы [ 2 ]

2 голосов
/ 03 августа 2020

Это работает?

=SUM(FILTER(B:B,ROW(B:B)>=MAX(ROW(B:B))-12)
2 голосов
/ 03 августа 2020

Вы можете создать для этого свою собственную функцию с помощью скрипта Google Apps (GAS).

Попробуйте следующее:

function onEdit(e){
  var row = e.range.getRow();
  var col = e.range.getColumn();
  if ( col==2  && e.source.getActiveSheet().getName() == "Sheet1" ){ 
   e.source.getActiveSheet().getRange("C1").setValue(sumLast12());     
}
}

function sumLast12() {
  
  var sheet = SpreadsheetApp.getActive().getSheetByName("Sheet1");
  var sheet_size = sheet.getLastRow();
  var elmt = sheet.getRange("B1:B"+sheet_size).getValues().flat([1]);
  var elmt12 = elmt.slice(-12);
  var sum = 0;
for( var i = 0; i < elmt12.length; i++ ){
    sum += parseInt( elmt12[i], 10 );
}
  return sum;
}

Пояснение :

  • Чтобы активировать эту функцию go в строке меню в верхней части файла электронной таблицы нажмите Инструменты => Редактор сценария и скопируйте вышеупомянутый код в пустой документ сценария ( см. прикрепленный снимок экрана для получения дополнительной информации) и сохраните документ (cntrl + s).
  • После сохранения скрипта каждый раз, когда вы редактируете ячейку в столбце B (либо добавляя новый значение внизу или изменить существующее значение, сценарий автоматически обновит значение в ячейке C1 суммой последних 12 значений в столбце B .

Обратите внимание: если вы не хотите изменять мой код, назовите лист, с которым вы работаете, как Sheet1 .

Объяснение

...