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 表格/应用程序脚本