我知道,像下面這樣如何在使用比較時避免在Excel中重複長公式?
=IF(ISERROR(LONG_FORMULA), 0, LONG_FORMULA)
可以
=IFERROR(LONG_FORMULA, 0)
被替換但是我在
=IF(REALLY_LONG_FORMULA < threshold, 0, REALLY_LONG_FORMULA)
如何尋找到避免鍵入REALLY_LONG_FORMULA
表達兩倍我可以這樣做嗎?
我知道,像下面這樣如何在使用比較時避免在Excel中重複長公式?
=IF(ISERROR(LONG_FORMULA), 0, LONG_FORMULA)
可以
=IFERROR(LONG_FORMULA, 0)
被替換但是我在
=IF(REALLY_LONG_FORMULA < threshold, 0, REALLY_LONG_FORMULA)
如何尋找到避免鍵入REALLY_LONG_FORMULA
表達兩倍我可以這樣做嗎?
我能夠想出如下:
=IFERROR(EXP(LN(REALLY_LONG_FORMULA – threshold)) + threshold, 0)
它的工作原理,利用一個負數的日誌會產生錯誤的事實和EXP
和LN
互爲逆。
這樣做的最大好處是,它避免了當你在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提供)代替:
對於嚴格不等式比較使用SQRT(_)^2
正如@湯姆夏普。
如果您正在比較threshold
的金額,我會考慮查看ExcelJet最近發佈的有關 Replacing Ugly IFs with MAX() or MIN()的博文。
此外,MAX()
和MIN()
功能比使用出租人已知功能如EXP()
和LN()
更直觀。
感謝您的評論。我儘可能使用MAX和MIN。然而(如果我錯了,糾正我),當功能不連續時,我不認爲MAX和MIN工作。例如,MAX(閾值,X)將等於X <閾值的閾值並且此後等於X.然而,如果我希望函數在X <閾值時等於0,然後等於X,我認爲這不能用MAX來實現。讓我知道你是否可以找到方法。 – snth
這是一個很棒的觀察。謝謝! – snth
謝謝!還用一個在理論上應該起作用的負門檻(見編輯)進行測試,但實際上你會遇到舍入誤差的盧布。這就是爲什麼我對這些功能有點懷疑,因爲你不能保證你總是會回到你最初想到的數字。 –
我沒有測試你的數學,但它看起來是正確的;我將在下次出現這種情況時進行測試。 – Jeeped
我使用自我統一的雙重往復加上各種其他(例如,,排除負數,然後取平方根),具體情況取決於以下情況:https://excelxor.com/2014/09/25/iferror-techniques-for-excluding-certain-values-from-results/ –
[簡化和數據驗證](http://i.stack.imgur.com/FvjvM.png) – Jeeped