Google表格:自动将公式应用于顶部

时间:2016-07-10 00:38:09

标签: google-sheets

我有一个简单的问题,我没有找到答案,简单或其他方式!

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

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

现在,C列通过公式B / 10计算。我想插入一个新行 ABOVE ROW 2(不在最后),我希望公式适用于C列中的新行。

我找不到自动执行此操作的方法。我知道怎么做 - 通过复制和粘贴或抓取句柄手动复制公式(但当然有很多列我实际上想要这样做) - 使用arrayformula扩展公式。我遇到的问题是 如果我像这样使用arrayformula:arrayformula(B2:B/10),如果我在最后添加行,那就太棒了。但是当我插入一行,成为新的第2行时,会发生的是公式仍然与我输入的原始单元格相关联并更改为arrayformula(B3:B/10)这是合乎逻辑但不是我想要的,因为新行2没有与之相关的公式 - 如果我使用arrayformula(B:B/10),那么它适用于包括第1行(列标题)在内的所有行,并且对位置感到非常困惑。

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

2 个答案:

答案 0 :(得分:3)

ARRAYFORMULA实际在这种情况下工作,如果您将其放在单元格C1中,如下所示:

=ARRAYFORMULA(IF(ROW(B:B)=1, "Tax", IF(ISBLANK(B:B), "", B:B/10)))
  1. 如果当前行是第一行,则创建单元格的值" Tax"。
  2. 如果是空白,则将其留空。
  3. 否则,请尝试使用B:B/10进行税务计算。

答案 1 :(得分:1)

这是一种使用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);
}