教程 | Excel計算性能知多少

01

寫在前面

占用計算時間的不是公式數(shù)量或工作簿大小进泼。而是單元格引用和計算操作的數(shù)量以及正在使用的函數(shù)的效率。

因為大多數(shù)工作表都是通過復(fù)制同時包含絕對引用和相對引用的公式來構(gòu)造的急但,所以它們通常包含大量公式花墩,這些公式包含重復(fù)的或相同的計算和引用雳刺。

避免復(fù)雜的宏大公式和數(shù)組公式盔性。通常,最好增加行和列的數(shù)量劲妙,并減少復(fù)雜的計算湃鹊。這樣,Excel 中的智能重算和多線程計算都能有更好的機會來優(yōu)化計算是趴。

那么涛舍,加快工作簿的計算都有哪些規(guī)則可循呢?

02

刪除相同唆途、重復(fù)和不必要的計算

查找相同富雅、重復(fù)和不必要的計算,并確定 Excel 計算此障礙的結(jié)果大概需要多少個單元格引用和計算肛搬。然后没佑,考慮如何使用更少的引用和計算得出相同的結(jié)果。

這通常涉及到下述一個或多個步驟:

  • 減少每個公式中的引用數(shù)温赔。

  • 將重復(fù)的計算移動到一個或更多幫助器單元格中蛤奢,然后從原始公式引用幫助器單元格。

  • 再使用一些行和列來計算和存儲一次中間結(jié)果,以便可在其他公式中重復(fù)使用它們啤贩。

03

盡可能使用最高效的函數(shù)

在找到涉及函數(shù)或數(shù)組公式的障礙時待秃,請確定能否使用更高效的方式獲得相同的結(jié)果。例如:

  • 與在未排序的數(shù)據(jù)上進(jìn)行查找相比痹屹,在已排序的數(shù)據(jù)上查找可能快數(shù)十倍或數(shù)百倍章郁。

  • VBA 用戶定義的函數(shù)通常比 Excel 中的內(nèi)置函數(shù)慢(但精細(xì)編寫的 VBA 函數(shù)可能很快)。

  • 盡量減少?SUM?和?SUMIF?等函數(shù)中所用單元格的數(shù)量志衍。計算時間與所用單元格的數(shù)量成正比(忽略未使用的單元格)暖庄。

  • 請考慮將運行較慢的數(shù)組公式替換為用戶定義的函數(shù)。

04

充分利用智能重算和多線程計算

Excel 中的智能重算和多線程計算使用得越充分楼肪,每次 Excel 重算時要執(zhí)行的處理越少培廓,因此:

  • 如果可以,請避免使用?INDIRECT?和?OFFSET?等可變函數(shù)春叫,除非它們的效率明顯優(yōu)于替代項肩钠。(經(jīng)過精心設(shè)計后使用?OFFSET?通常速度很快。)

  • 盡量減少數(shù)組公式和函數(shù)中正在使用的區(qū)域的大小象缀。

  • 將數(shù)組公式和宏大公式拆分到單獨的幫助程序列和行蔬将。

  • 避免單線程函數(shù):

    • PHONETIC

    • CELL(使用“格式”或“地址”參數(shù)時)

    • INDIRECT

    • GETPIVOTDATA

    • CUBEMEMBER

    • CUBEVALUE

    • CUBEMEMBERPROPERTY

    • CUBESET

    • CUBERANKEDMEMBER

    • CUBEKPIMEMBER

    • CUBESETCOUNT

    • ADDRESS爷速,其中給定第 5 個參數(shù) (sheet_name)

    • 引用數(shù)據(jù)透視表的任何數(shù)據(jù)庫函數(shù)(DSUM央星、DAVERAGE 等)

    • ERROR.TYPE

    • HYPERLINK

    • VBA 和 COM 加載項用戶定義的函數(shù)

  • 避免迭代使用數(shù)據(jù)表和循環(huán)引用:這兩者均執(zhí)行單線程計算。

05

對每次更改進(jìn)行計時和測試

你所做的一些更改可能令你感到驚訝惫东,這可能是由于未得到你認(rèn)為應(yīng)得到的結(jié)果莉给,或者計算速度比預(yù)期的慢。因此廉沮,應(yīng)按如下方式對每次更改進(jìn)行計時和測試:

  • 使用?RangeTimer?宏對要更改的公式進(jìn)行計時颓遏。

  • 進(jìn)行更改。

  • 通過使用?RangeTimer?宏對已更改的公式進(jìn)行計時滞时。

  • 檢查已更改的公式是否仍得出正確答案叁幢。

06

示例

例一:即時更新總和

你需要計算一列包含 2,000 個數(shù)字的即時更新總和。假設(shè) A 列包含數(shù)字坪稽,B 和 C 列包含即時更新總和曼玩。

可使用?SUM(高效函數(shù))編寫公式(參考B列)

將公式向下復(fù)制到 B2000。

SUM?總共使用了多少單元格引用窒百?B1 引用一個單元格黍判,B2000 引用 2,000 個單元格。平均每個單元格是 1,000 個引用篙梢,因此總共是 200 萬個引用顷帖。如果選擇 2,000 個公式并使用?RangeTimer?宏,則顯示 B 列 2,000 個公式的計算用時為 80 毫秒。其中大部分計算都重復(fù)多次:B2:B2000 的每個公式都使用?SUM?A1:A2贬墩。

也可以使用(參考C列)

C1=A1
C2=C1+A2

將此公式向下復(fù)制到 C2000榴嗅。

現(xiàn)在總共使用了多少單元格引用?每個公式均使用兩個單元格引用(第一個公式除外)陶舞。因此录肯,總數(shù)為 1999*2+1=3999。這可減少 500 個單元格引用吊说。

RangeTimer?顯示 C 列 2,000 個公式的計算用時為 3.7 毫秒论咏,而 B 列的計算用時為 80 毫秒。這一改變的性能改進(jìn)系數(shù)僅為 80/3.7=22(而非 500)颁井,因為每個公式都有少量開銷厅贪。

麥斯貝思敬酒服新娘2020新款女酒紅色訂婚結(jié)婚回門小晚禮服連衣裙平時可穿大合唱團(tuán)演出服 酒紅色 XL

京東198.00購買

例二:錯誤處理

執(zhí)行大量計算的公式時如果在出現(xiàn)錯誤時結(jié)果顯示為零(在完全匹配查找中經(jīng)常遇到這種情況),則可以通過多種方式編寫它雅宾。

  • 可以將它編寫為單個公式养涮,這樣運行速度很慢:

    B1=IF(ISERROR(time expensive formula),0,time expensive formula)

  • 可編寫成兩個公式(此方法較快):

    A1=time expensive formula

    B1=IF(ISERROR(A1),0,A1)

  • 或者,可使用?IFERROR?函數(shù)眉抬,它運行速度快且簡單贯吓,還是單個公式:

    B1=IFERROR(time expensive formula,0)

07

寫在最后

Excel 讓你能夠高效管理更大型的工作表,與早期版本相比蜀变,它還能大幅提升計算速度悄谐。創(chuàng)建大型工作表時,很容易就采用會導(dǎo)致計算緩慢的方式進(jìn)行構(gòu)建库北。計算緩慢的工作表會增加錯誤爬舰,因為用戶發(fā)現(xiàn)在執(zhí)行計算時很難進(jìn)行維護(hù)。

通過使用一組簡單的技術(shù)寒瓦,可將大部分計算緩慢的工作表提速 10 倍或 100 倍情屹。此外,你還可在設(shè)計和創(chuàng)建工作表時應(yīng)用這些技術(shù)來確保其快速計算

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末杂腰,一起剝皮案震驚了整個濱河市垃你,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌喂很,老刑警劉巖惜颇,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異恤筛,居然都是意外死亡官还,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進(jìn)店門毒坛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來望伦,“玉大人林说,你說我怎么就攤上這事⊥蜕。” “怎么了腿箩?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長劣摇。 經(jīng)常有香客問我珠移,道長,這世上最難降的妖魔是什么末融? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任钧惧,我火速辦了婚禮,結(jié)果婚禮上勾习,老公的妹妹穿的比我還像新娘浓瞪。我一直安慰自己,他們只是感情好巧婶,可當(dāng)我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布乾颁。 她就那樣靜靜地躺著,像睡著了一般艺栈。 火紅的嫁衣襯著肌膚如雪英岭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天湿右,我揣著相機與錄音诅妹,去河邊找鬼。 笑死诅需,一個胖子當(dāng)著我的面吹牛漾唉,可吹牛的內(nèi)容都是我干的荧库。 我是一名探鬼主播堰塌,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼分衫!你這毒婦竟也來了场刑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蚪战,失蹤者是張志新(化名)和其女友劉穎牵现,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體邀桑,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡瞎疼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了壁畸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贼急。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡茅茂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出太抓,到底是詐尸還是另有隱情空闲,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布走敌,位于F島的核電站碴倾,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏掉丽。R本人自食惡果不足惜跌榔,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望捶障。 院中可真熱鬧矫户,春花似錦、人聲如沸残邀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芥挣。三九已至驱闷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間空免,已是汗流浹背空另。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蹋砚,地道東北人扼菠。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像坝咐,于是被迫代替她去往敵國和親循榆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內(nèi)容