Add an IFCOND() function
similar to IFERROR, add a function that only evaluates second argument if first argument not met, like
=IFCOND([Formula],">5",5)
instead of
=IF([Formula]>5,5,[Formula])
This would make a lot of formulas much shorter and also improve execution time, as it would only have to evaluate [Function] once instead of twice if the condition is not met.
13 comments

Carole commented
Every single time I use Excel I wish this formula already existed. There is so much time spent on copying and pasting long complex formulas to first test a condition based on that formula and then return the result of the formula.
This would also basically replace the need to create a lot of other suggested IF formulas as the condition can be specified rather than having to be its own variation on an IF formula.

Kenneth Barber commented
I should have been more specific. Variables should be local to the formula that they are used in. See the link below:
https://excel.uservoice.com/forums/304921excelforwindowsdesktopapplication/suggestions/10668843newwithfunctionsimilartorlanguagetoshorten 
Harlan Grove commented
Kenneth,
I didn't mention stack access other than the top. I don't want to recreate FORTH.
Being able to create names on the fly would be good. About time most of the XLM functions became available in nonmacro worksheets. Unfortunately, SET.NAME() raises the ticklish question whether expressions in cell formulas could change ALREADY DEFINED names, and whether ad hoc names created while evaluating formulas should be deleted when formula evaluation completes.

Kenneth Barber commented
I think that support for named variables would be better than trying to track where on a stack you pushed values that you wanted to save.

Harlan Grove commented
Poor example, as =MIN(5,[Formula]) would suffice.
I get the point, but PUSH and POP functions would work as long as PUSH returned its argument's value. That is, something like
=IF(PUSH(very_complex_expression)>=0,SQRT(PUSH(POP())),IF(PUSH(POP())<0,PUSH(POP())&" is negative",IF(NOT(ISERROR(PUSH(POP()))),PUSH(POP())&" not numeric",POP())))
OK, PUSH(POP()) would be very common, so maybe a PPOP() or GET().

Detlef Lewin commented
This should be set to 'Completed' to free the 43 votes.

Thierry B. commented
I vote for it too. It could also be seen as an extension of the SUMIF function where the first argument could be, not only a range but an expression : SUMIF ( [formula], criteria)

Thomas K commented
Very nice to hear

Graham commented
I can't vote as I've used them all but this feature would save a lot of time! With the usual method if a formula changes you basically need to edit it twice, which is a huge hassle, not to mention the shortened processing time.

Kara T. commented
This would be phenominal, and save a good amount of processing!

Cathy Harley (EXCEL PM) commented
Thanks for the feedback! We're building a backlog for new functions we want to add to the product, so keep voting for this one if you'd like to see it in the product.

Peter commented
This can really be made as a generalization of IFERROR.. please include!!

sven commented
Yes! I often think this same thing. Sometimes if the result of my formula is X, I want to return Y, otherwise just return the result of that formula. So you have to type the whole formula again!