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

#google-apps-script #google-sheets #static #google-sheets-formula

Вопрос:

У меня есть документ, который я использую для расчета финансов. У меня есть следующий рабочий скрипт, который вставляет новую строку над строкой 2, перемещая все данные в строке 2 и ниже, когда ячейки A2:B2 не пусты.

 function AddaLine() {  var spreadsheet = SpreadsheetApp.getActive();  var [a2, b2] = spreadsheet.getActiveSheet().getRange("A2:B2").getDisplayValues()[0];  if (a2 != "" amp;amp; b2 != "") {  var spreadsheet = SpreadsheetApp.getActive();  spreadsheet.getRange('2:2').activate();  spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);  spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();  spreadsheet.getRange('A2').activate();  } }  

Ячейка A1 содержит:

 =SUM($A$2:A3)  

Я хочу, чтобы A2 оставался статичным, но A3 увеличивался по мере автоматического добавления новых строк. Проблема, с которой я сталкиваюсь, заключается в том, что ссылка на статическую ячейку увеличивается при добавлении новой строки и становится

 =SUM($A$3:A4)  

Я хочу, чтобы это пошло на

 =SUM($A$2:A4)  

только увеличивая вторую, нестатическую, ссылочную ячейку каждый раз, когда новые строки вставляются выше строки 2.

 $A$2:A5 $A$2:A6 $A$2:A7 ... $A$2:A5000 ...  

Любая помощь в выяснении того, что я предполагаю, является простой проблемой, с которой я не могу справиться, была бы очень признательна!

ПРИМЕЧАНИЕ: Я пытаюсь сделать это таким образом, чтобы автоматизация работала как в приложении для мобильных телефонов, так и на ПК.

Ответ №1:

Вместо =SUM($A$2:A3) того, чтобы пытаться

 =sum(offset(A3,-row(A3) 2,,row(A3)-1))  

Комментарии:

1. Это на 100% решило эту проблему! Спасибо вам за вашу помощь! Ты потрясающая!

Ответ №2:

INDIRECT или INDEX может сделать статическую ссылку:

 =SUM(INDIRECT("A2"):A3)  

или

 =SUM(INDEX(A:A,2):A3)