【问题标题】:Insert row and preserve formulas on Google Spreadsheet在 Google 电子表格上插入行并保留公式
【发布时间】:2014-01-30 18:09:01
【问题描述】:

我正在制作一个每天都会自行更新的电子表格。为简单起见,假设我每天中午生成一个数字,晚上电子表格应该将该数字复制到日志列中,并显示该列所有存储值的总和(实际上有几列,它们的数字可能未来成长)。在我当前的实现中,求和公式会自动更新,因此只保存以前可用的值。我希望我能阻止这种行为。

例子:

电子表格显示:

Total     1
Today     2
History 
1/29/2014 1

明天,在我更新之前,应该是:

Total     3
Today     
History 
1/30/2014 2
1/29/2014 1

我在“总计”行中插入的公式是:

=sum(B4:B)

基本上,我为脚本编写的代码包含:

//Inserts a new line to compose history log:
sheet.insertRowsAfter(firstHystoryLine-1, 1);

并且脚本运行后,公式更新为

=sum(B5:B)

所以我的问题。

【问题讨论】:

  • 我通过仅复制值找到了合适的解决方法: var todayCol = sheet.getRange("E2:E7"); todayCol.copyTo(sheet.getRange("F2:F7"), {contentsOnly:true});

标签: google-apps-script google-sheets


【解决方案1】:

或者,您可以添加代码

sheet.getRange("B1").setFormula("=sum(b4:b)")

这将正确重置您的公式。

【讨论】:

    【解决方案2】:

    试试 Sum(b3:b)。插入一行应该不会影响公式。

    【讨论】:

    • 不确定我是否正确理解了您的观点,但我无法让它发挥作用。使用小写并没有改变任何东西。不使用等号确实可以防止数字发生变化,但公式会显示在单元格中而不是结果中。
    • 对不起,你需要等号,它是一个公式,所以 =sum(b3:b)
    • 建议从 B3 开始求和。插入新行时,公式不会改变。
    【解决方案3】:

    将您的字段设置为 =Sum(B$4)。使用美元符号应该可以防止它滑动。如果您还要在列中添加,您会想要执行 =Sum($B$4)。

    【讨论】:

    • 对我不起作用。工作表实际上更改为 =Sum($B$5:B),无论 $ 符号如何。即使使用单个单元格 (=Sum($B$$)),它也会增加数字。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    相关资源
    最近更新 更多