2017-03-10 64 views
0

我絕不是一個excel或VBA程序員。我正在看一個excel文件的工作,並想知道關於其中一個公式的東西。程序員將此公式添加到其中一個單元格中。正在使用'如果'在excel公式中對性能不利?

=IF(F2<>"",(D2/((AVERAGE(F2:G2)*$R$21)+1)),D2)

我想知道如果這If說法是揮發性的。也就是說,If聲明總是傾聽整個工作簿中的更改,這是否會對性能產生負面影響?

+0

表現是一個相對的概念。 「IF」將會成爲全球數百萬個電子表格中使用最多的10個公式中的哪一個?你能否在沒有IF語句的情況下重寫該公式? –

+0

否http://beatexcel.com/volatile-functions-excel/。我實際上期望if函數版本比沒有if = D2 /(AVERAGE(F2:G2)* $ R $ 21 *(F2 <>「」)+ 1)' – Slai

回答

2

If聲明對性能沒有負面影響。實際上它取決於你的函數中使用的邏輯文本的複雜性。在上述情況下,您可能不會有任何問題。

+0

感謝您在Stack Overflow上的第一個答案。你有沒有可以引用的參考資料,或者你可以提供哪些鏈接來支持你的答案? –

1

If聲明可以很好地使用,因爲它可能是一個合理的大小數據,Excel可以快速計算公式。如果數據在If聲明中發生變化,它將快速重新計算它。

-1

性能是不是在這裏一個問題 - 事實上公式中的Excel工作簿上重新計算任何工作表中的單元格的任何時間改變,除非你改變了計算模式爲「手動」(見公式選項卡)。在特別複雜的工作簿中,這隻會成爲一個問題,在性能方面,有很多查找,sumifs/countifs,尤其是數組公式。只有在您可以做任何事情之前,您實際上必須等待工作簿重新計算之後,才值得考慮一下。將計算模式更改爲手動本身可能是一個問題,因爲它會讓您忘記手動運行計算。

編輯:作爲@chrisneilsen筆記,我上面的聲明是不正確的。有關更多信息,請參閱this article

+2

這個版本有點快。一個公式重新計算它依賴的一個或多個單元格的變化(例外:在每次重新計算時都會使用例如INDIRECT重新計算的volatile函數) –

+0

因此,如果我有一個包含大量數據的大型excel文件,長時間運行比只有在被調用時纔會作出反應的宏更麻煩? –

+1

啊,你,@ chrisneilsen你是對的。實際上有一個我不知道的依賴鏈。我正在考慮rand()和indirect()如何重新計算。我會修改我的答案。 –