Google表格:自动将公式应用于顶部添加的新行

Nei*_*eil 4 google-sheets

我有一个简单的问题,没有找到答案,无论是简单还是其他!

我的电子表格看起来像这样(例如)

A B C 1 Name Amount Tax 2 Neil 20 2 3 Rose 100 10

现在,列C通过公式B / 10计算。我想在第2行上方插入新行(而不是在末尾),并且我希望公式适用于C列中的新行。

我找不到自动执行此操作的方法。我知道如何-通过复制和粘贴或抓取手柄来手动复制公式(但当然我实际上确实要这样做很多列)-使用arrayformula扩展公式。我的问题是,如果我像这样使用arrayformula:arrayformula(B2:B/10)如果在末尾添加行,那很棒。但是,当我插入一行成为新的第二行时,发生的事情是该公式仍与我输入的原始单元格保持链接,并且更改arrayformula(B3:B/10) 为符合逻辑但不是我想要的内容,因为新的第二行没有与之关联的公式-如果我使用arrayformula(B:B/10)它,那么它将应用于包括行1(列标题)在内的所有行,并且对位置非常困惑。

一定有办法,所以我问你,互联网为你提供帮助:-)

小智 6

如果您按以下方式将其放置在单元格C1中,则在这种情况下,an ARRAYFORMULA实际上可以工作:

=ARRAYFORMULA(IF(ROW(B:B)=1, "Tax", IF(ISBLANK(B:B), "", B:B/10)))
Run Code Online (Sandbox Code Playgroud)
  1. 如果当前行是第一行,则将单元格的值设为“ Tax”。
  2. 否则,如果为空,则将其留空。
  3. 否则,尝试使用进行税收计算B:B/10


小智 4

以下是使用 Apps 脚本在顶部插入新行并将公式复制到新行的方法。根据您的数据的复杂程度,可能需要进行一些定制,但希望您能明白这一点。

// global 
var ss = SpreadsheetApp.getActive();


function addFirstRow() {
    var firstRow = 2;
    var sh = ss.getActiveSheet();
    var lCol = sh.getLastColumn();
    var range = sh.getRange(firstRow, 3, 1, lCol);
    var formulas = range.getFormulas();
    sh.insertRowsAfter(1, 1);
    newRange = sh.getRange(firstRow, 3, 1, lCol);
    newRange.setFormulas(formulas);
}
Run Code Online (Sandbox Code Playgroud)