#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)