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

Google sheets GoogleSheets:自动将公式应用于顶部添加的新行,google-sheets,Google Sheets,我有一个简单的问题,我没有找到答案,不管是简单还是其他 我的电子表格看起来像这样(比如说) 现在,通过公式B/10计算C列。我想插入一个新行 在第2行(不是末尾)上方,我希望公式应用于C列中的新行 我找不到一种自动完成的方法。我知道怎么做 通过复制粘贴或抓取句柄,手动复制公式(当然,我确实想对许多列执行此操作) 使用arrayformula扩展公式。我的问题是 如果我像这样使用arrayformula:arrayformula(B2:B/10)如果我在末尾添加行,那就太好了。但当我插入一行,成

我有一个简单的问题,我没有找到答案,不管是简单还是其他

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

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

我找不到一种自动完成的方法。我知道怎么做

  • 通过复制粘贴或抓取句柄,手动复制公式(当然,我确实想对许多列执行此操作)
  • 使用arrayformula扩展公式。我的问题是 如果我像这样使用arrayformula:
    arrayformula(B2:B/10)
    如果我在末尾添加行,那就太好了。但当我插入一行,成为新的第2行时,发生的情况是公式仍然与我输入的原始单元格链接,并更改为
    arrayformula(B3:B/10)
    ,这是合乎逻辑的,但不是我想要的,因为新行2没有与之关联的公式
  • 如果我使用
    arrayformula(B:B/10)
    则它适用于包括第1行(列标题)在内的所有行,并且对位置感到非常困惑

必须有一种方法,所以我请求您,互联网为您提供帮助:-)

这里有一种方法可以使用应用程序脚本在顶部插入新行,并将公式复制到新行。这可能需要一些定制,具体取决于数据的复杂程度,但希望您能理解

//全局
var ss=SpreadsheetApp.getActive();
函数addFirstRow(){
var firstRow=2;
var sh=ss.getActiveSheet();
var lCol=sh.getLastColumn();
var范围=sh.getRange(第一行,3,1,lCol);
var formulas=range.getFormulas();
sh.insertRowsAfter(1,1);
newRange=sh.getRange(第一行,3,1,lCol);
newRange.setFormulas(公式);

}
如果将
数组公式
按如下方式放置在单元格C1中,它实际上将在这种情况下工作:

=ARRAYFORMULA(IF(ROW(B:B)=1, "Tax", IF(ISBLANK(B:B), "", B:B/10)))
  • 如果当前行是第一行,则将单元格的值设为“Tax”
  • 否则,如果为空,则保留为空
  • 否则,尝试使用
    B:B/10
    进行税务计算

  • 从一点阅读,似乎有触发器,简单和可安装。我想我需要后者,脚本需要更改为不添加行,而只是将公式(有3列公式)复制到新创建的行中……这是一个非常好的答案(不需要AppScript),但有几个注意事项:使用
    而不是
    。您需要允许在工作表上进行迭代计算,以使公式起作用。很好的一个。但是,如果你试图覆盖范围内的任何单元格内容,它会崩溃得很厉害。
    =ARRAYFORMULA(IF(ROW(B:B)=1, "Tax", IF(ISBLANK(B:B), "", B:B/10)))