Если вы хотите продолжать использовать пользовательскую функцию:
Вам нужно использовать return values
вместо setValues()
. Вы не можете устанавливать значение произвольных ячеек из пользовательской формулы.
Также, как указано @ Cooper"Вы можете вернуть двумерный массив, но он может только переполниться вниз и направо. Не вверх и влево ". То есть вы не можете переполнить вверх, но только вниз.
Это означает, что вам нужно вызывать вашу функцию из ячейки C4 , а не из C16 * 1016. *.
Чтобы изменить формулу и включить переполнение, вам нужно создать 2D-массив требуемых размеров.
В вашем случае 1 столбец и 9 строк зададут все vEn
ценности. Вы также можете использовать 13 строк, если хотите установить vEn
и vEnergy
в один go.
. Проверьте здесь , чтобы узнать, как это сделать.
Применение образца к вашему делу:
В начале своей функции вы можете определить: var myArray = [];
, а затем заменить внутреннюю часть вашего на l oop (setSource.getCell(k,1).setValue(vEn);
) с
myArray[k] = [];
myArray[k].push(vEn);
И, наконец, замените return vEnergy
на:
myArray[12].push(vEnergy);
return myArray;
Я не проверял ваш код, поскольку у меня нет доступа к «Данные», но я надеюсь, что мой ответ поможет вам изменить код нужным вам способом.