在試算表中處理大型資料集時,你可以利用資料參照來改善效能。本文的建議做法可改善下列效能:
- 運算速度
- 穩定性
- CPU 使用率
盡可能參照同一份試算表中的資料
請參照你所使用的同一份試算表中的資料,這比使用以下各種 Import 函式更快:
- IMPORTRANGE
- IMPORTDATA
- IMPORTXML
- IMPORTHTML
如果使用 IMPORTRANGE() 擷取其他試算表的資料,即使符合下列條件,Import 函式仍然需要透過網際網路在各試算表之間往返參照資料:
- 你是試算表擁有者。
- 在同一個瀏覽器中開啟試算表。
- 試算表位於同一個雲端硬碟中。
無論是要求資料或擷取資料,系統都需往返操作。你可能還會遇到網路延遲和連線不穩的情況,造成載入速度變慢。
如果將其他試算表中的資料手動移到自己的試算表,然後參照位於自己試算表中的資料 (包括同一份試算表中的不同分頁),則資料擷取程序就會在本機進行,無需透過網際網路。這樣做雖然可以節省時間,但只適用於處理相對靜態而確定且不會隨時變動的資料 (例如庫存記錄或歷來資料)。
如要手動移動資料,請將其他試算表中現有的資料複製到你的試算表:
- 按一下底部工作表名稱旁邊的「向下箭頭」圖示 「複製到」「現有試算表」。
- 選取要貼上這張工作表的試算表。
提示:如果在雲端硬碟檢視畫面中找不到目標試算表,請在底部網址列中貼上該試算表的網址。
使用封閉式範圍參照,不要使用開放式範圍參照
開放式範圍參照代表未指定特定列或欄做為範圍的起始和結束。例如:A:B 這個範圍代表包含了 A 欄和 B 欄在內的所有儲存格。
封閉式範圍參照則是有指定特定列或欄做為範圍的起始和結束。
例如:A1:B6、A1:C100。
開放式範圍:A:B
封閉式範圍:A1:B6
範例:假設你要計算 A 欄的總和,但 A 欄全部 10,000 列中只有前 10 列包含值。
- 如果在 SUM 函式中使用開放式範圍參照 SUM(A:A),即使該開放式範圍參照中含有空白儲存格,電腦仍會讀取全部 10,000 列內容。Google 試算表會逐一檢查範圍中所有儲存格,確保沒有遺漏任何資料。
- 如果使用封閉式參照 SUM(A1:A10),電腦就只會讀取 A1 到 A10 資料列,這樣 Google 試算表的運算速度會比較快。
有效率地參照易變函式
TODAY()、RAND()、RANDBETWEEN() 和 NOW() 是易變函式,因為這些函式經常變動及更新以隨時反映最新資料。這些函式本質上並非靜態資料,舉例來說,TODAY() 會每天更新。
範例:B 欄的每一列在計算結果時都會讀取 A 欄中每一列的資料。這表示當 B 欄計算結果時,A 欄就會更新所有儲存格。
當你參照會傳回相同結果的易變函式時 (例如 NOW() 和 TODAY()),請務必使用絕對參照,這樣就只需參照一次。在這個範例中,B 欄會依據 A2 儲存格的資料來計算結果。當你移除不必要的相依資料後,試算表的執行速度就會比較快。
盡量避免使用冗長的參照鏈
參照鏈會使試算表的執行速度變慢。例如,在以下範例中,A2 會讀取 A1 的資料;A3 會讀取 A2 的資料;依此類推。由於資料都鏈結在一起,為了計算 A10 的值,Google 試算表就必須等候前面所有的值 (A1 到 A9) 都計算完畢後,才能傳回 A10 的值。
如要避免環環相扣的計算方式,請在填入儲存格資料時使用絕對參照。在這個範例中,A2 會從 A1 讀取資料,A3 也會從 A1 讀取資料,依此類推。由於 A1 內含已完成計算的現有值,A2 到 A10 即可直接擷取 A1 的值。結果相同,但計算速度更快。