2014-04-20 815 views
14

有些代码是为此目的而编写的,但是新的附加组件不再适用。如何强制新的Google Spreadsheets刷新和重新计算?

由于提前, 易多

+1

是否按Ctrl + R不为你工作? – pnuts

+0

不是真的,我的意思是自动刷新和重新计算 – iddo

+0

Rubén的答案来自http://stackoverflow.com/questions/38127603/force-google-sheet-formula-to-recalculate帮助我 –

回答

24

文件 - >电子表格设置 - >(标签)计算 - >重新计算(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()和我做了上述重新计算设定。 - >但不自动刷新。 :-(
它只更新,如果我改变在功能寻找范围内的一些价值

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

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()); 
} 

您需要为firstRow组数字,firstColumnlastRowlastColumn

脚本活跃起来时,电子表格打开,一个单元格的内容写入再次相同的细胞。这足以触发TODAY() FUNC灰。

想要了解更多关于Edward Moffett链接的信息。 Force google sheet formula to recalculate

最好的问候,
克里斯托夫

+1

这似乎是正确的答案,但甚至当我这样做时,它不会自动刷新。任何想法我在这里失踪? – Meir

+0

我编辑过 - >增加了一个例子。 – user3536211