2014-04-20 816 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