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

Posted

技术标签:

【中文标题】Google表格:自动将公式应用于顶部添加的新行【英文标题】:Google Sheets: automatically apply formula to new rows added at the top 【发布时间】:2016-07-10 00:38:08 【问题描述】:

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

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

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

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

我找不到自动执行此操作的方法。我知道怎么做

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

一定有办法,所以我问你,互联网寻求你的帮助:-)

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

这是一个很好的答案(不需要 AppScripts),但有几个注意事项:使用 ; 而不是 ,。您需要允许在工作表上进行迭代计算才能使公式起作用。不错。 但是,如果您尝试覆盖该范围内的任何单元格内容,它将严重损坏。 这确实是一个很好的答案,但要注意性能:ArrayFormula 计算时间会随着您使用的行数而迅速增加。【参考方案2】:

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

【讨论】:

看了一下,好像有触发器,简单可安装。我想我需要后者,并且脚本需要更改为不添加行,而只是将公式(有 3 列带有公式)复制到新生成的行中......

以上是关于Google表格:自动将公式应用于顶部添加的新行的主要内容,如果未能解决你的问题,请参考以下文章

自动填充公式(跨电子表格运行) - Google 表格/应用程序脚本

Google表格上的标准格式帮助

以编程方式在 Google 表格中插入公式

如何使用 Google Apps 脚本将公式添加到 Google 表格?

将新行添加到 Google 表格时触发 Python

动态添加的行无法运行自动填充 ajax 脚本