В column B
формула =ARRAYFORMULA(IF(A4:A="","",((A4:A-A3:A)/A3:A)*100))
работает как ожидалось. Поэтому я думал, что та же самая формула массива будет работать и с другими формулами, но в column C
формула:
=ARRAYFORMULA(IF(A4:A="","",IF(ROW(A4)<B1+3,0,IF(ROW(A4)=B1+3,AVERAGE(INDEX(A:A, ROW(A4)-(B1-1)):INDEX(A:A,ROW(A4))),IF(ROW(A4)>B1+3,AVERAGE(INDEX(A:A, ROW(A4)-(B1-1)):INDEX(A:A,ROW(A4))))))))
не дает ожидаемого результата, однако она все еще расширяется до row 4375
.
И в столбце D я использовал функцию сценария google app, которая была только потому, что моя формула в column C
не дала ожидаемого результата, но функция ниже расширяет намного больше, чем row 4375
, когда я на самом деле хочу, чтобы он расширялся только до row 4375
:
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
ss.getRange("D4").setFormula("IF(ROW(A4)<$B$1+3,0,IF(ROW(A4)=$B$1+3,AVERAGE(INDEX(A:A, ROW(A4)-($B$1-1)):INDEX(A:A,ROW(A4))),IF(ROW(A4)>$B$1+3,AVERAGE(INDEX(A:A, ROW(A4)-($B$1-1)):INDEX(A:A,ROW(A4))))))");
var lr=ss.getLastRow();
var filldown= ss.getRange(4,4,lr-4);
ss.getRange("D4").copyTo(filldown);
}
Однако он дает ожидаемый результат до row 4375
Что я делаю неправильно в формуле в column C
и функции для column D
?
Вот ссылка на лист: https://docs.google.com/spreadsheets/d/1TFf6XO2aIiphIJC3Wp9Bx9Lr6X6R9AevyssdOLeDCcg/edit?usp=sharing
Спасибо