如何强制新的Google电子表格刷新并重新计算?

问题描述 投票:18回答:3

为此目的编写了一些代码,但是新的附加组件不再适用。

在此先感谢,Iddo

google-sheets
3个回答
32
投票

文件 - >电子表格设置 - >(标签)计算 - >重新计算(3个选项) - 改变 - 在变化和每一分钟 - 变化和每小时 这会影响NOW,TODAY,RAND和RANDBETWEEN的更新频率。

但.. ..它只更新,如果函数参数(它们的范围,单元格)受到影响。

从我的例子 我使用谷歌电子表格来查找一个人的年龄。我的生日日期格式为(dd.mm.yyyy) - >这是瑞士的使用格式。

=ARRAYFORMULA(IF(ISTEXT(K4:K), IF(TODAY() - DATE(YEAR(TODAY()), MONTH(REGEXREPLACE(K4:K, "[.]", "/")), DAY(REGEXREPLACE(K4:K, "[.]", "/"))) > 0, YEAR(TODAY()) - YEAR(REGEXREPLACE(K4:K, "[.]", "/")) + 1, YEAR(TODAY()) - YEAR(REGEXREPLACE(K4:K, "[.]", "/"))), IF(LEN(K4:K) > 0, IF(TODAY() - DATE(YEAR(TODAY()), MONTH(K4:K), DAY(K4:K)) > 0, YEAR(TODAY()) - YEAR(K4:K) + 1, YEAR(TODAY()) - YEAR(K4:K)), "")))

我正在使用TODAY(),我做了上面描述的重新计算设置。 - >但不会自动刷新。 :-( 如果我在函数查找范围内更改某个值,它只会更新。

所以我为此编写了一个Google脚本(工具 - >脚本编辑器......)。

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheetMaster = ss.getSheetByName("Master"); 
  var sortRange = sheetMaster.getRange(firstRow, firstColumn, lastRow, lastColumn);  

  sortRange.getCell(1, 2).setValue(sortRange.getCell(1, 2).getValue());
}

你需要为qazxsw poi,qazxsw poi,qazxsw poi,qazxsw poi设置数字

当电子表格打开时,脚本将处于活动状态,将一个单元格的内容再次写入同一个单元格。这足以触发firstRow功能。

请查看Edward Moffett关于该链接的更多信息。 firstColumn

最好的祝福, 克里斯托夫


8
投票

对我有用的是在第一列之前插入一列并立即删除它。基本上,做一个会影响工作表中将触发重新计算的所有单元格的更改。


2
投票

老问题......但是,只需在工作表中的某个位置添加一个复选框。选中或取消选中它将刷新单元格公式。

© www.soinside.com 2019 - 2024. All rights reserved.