2016-09-23 50 views
1

我知道,像下面這樣如何在使用比較時避免在Excel中重複長公式?

=IF(ISERROR(LONG_FORMULA), 0, LONG_FORMULA) 

可以

=IFERROR(LONG_FORMULA, 0) 

被替換但是我在

=IF(REALLY_LONG_FORMULA < threshold, 0, REALLY_LONG_FORMULA) 

如何尋找到避免鍵入REALLY_LONG_FORMULA表達兩倍我可以這樣做嗎?

回答

3

我能夠想出如下:

=IFERROR(EXP(LN(REALLY_LONG_FORMULA – threshold)) + threshold, 0) 

它的工作原理,利用一個負數的日誌會產生錯誤的事實和EXPLN互爲逆。

這樣做的最大好處是,它避免了當你在REALLY_LONG_FORMULA一個副本,改變的東西而忘記了適用於REALLY_LONG_FORMULA另一份同樣的變化在你的IF聲明中意外地將錯誤引入您的電子表格。

比比較大,如

=IF(REALLY_LONG_FORMULA>=threshold,0,REALLY_LONG_FORMULA) 

可以用下面

=IFERROR(threshold-EXP(LN(threshold-REALLY_LONG_FORMULA)),0) 

實施例(由@Jeeped提供)代替:

Greater or equal than example

對於嚴格不等式比較使用SQRT(_)^2正如@湯姆夏普。

+0

我沒有測試你的數學,但它看起來是正確的;我將在下次出現這種情況時進行測試。 – Jeeped

+0

我使用自我統一的雙重往復加上各種其他(例如,,排除負數,然後取平方根),具體情況取決於以下情況:https://excelxor.com/2014/09/25/iferror-techniques-for-excluding-certain-values-from-results/ –

+1

[簡化和數據驗證](http://i.stack.imgur.com/FvjvM.png) – Jeeped

0

如果您正在比較threshold的金額,我會考慮查看ExcelJet最近發佈的有關 Replacing Ugly IFs with MAX() or MIN()的博文。

此外,MAX()MIN()功能比使用出租人已知功能如EXP()LN()更直觀。

+0

感謝您的評論。我儘可能使用MAX和MIN。然而(如果我錯了,糾正我),當功能不連續時,我不認爲MAX和MIN工作。例如,MAX(閾值,X)將等於X <閾值的閾值並且此後等於X.然而,如果我希望函數在X <閾值時等於0,然後等於X,我認爲這不能用MAX來實現。讓我知道你是否可以找到方法。 – snth

0

與SQRT比較LN精通^ 2: -

enter image description here

因爲SQRT(0)給出0,但LN(0)給出#NUM!

所以你可以根據你是否想要平等來選擇使用哪一個。

這些也適用於負數 - 理論上。

enter image description here

+0

這是一個很棒的觀察。謝謝! – snth

+0

謝謝!還用一個在理論上應該起作用的負門檻(見編輯)進行測試,但實際上你會遇到舍入誤差的盧布。這就是爲什麼我對這些功能有點懷疑,因爲你不能保證你總是會回到你最初想到的數字。 –