我有一个简单的问题,我没有找到答案,简单或其他方式!
我的电子表格看起来像这样(比如说)
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行(列标题)在内的所有行,并且对位置感到非常困惑。
必须有办法,所以我问你,互联网为你提供帮助: - )
答案 0 :(得分:3)
ARRAYFORMULA
实际将在这种情况下工作,如果您将其放在单元格C1中,如下所示:
=ARRAYFORMULA(IF(ROW(B:B)=1, "Tax", IF(ISBLANK(B:B), "", B:B/10)))
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);
}