Много раз за многие годы я хотел использовать оператор If в Excel / OpenOffice Calc в виде:
If(A (comparison operator) B, A, C)
или, что не менее полезно:
If(A (comparison operator) B, C, A)
где A - очень длинное и запутанное выражение, а B и C - короткие и простые, часто (но не всегда) просто буквальное значение. Мне нужен был способ сделать одно из них, в котором не было бы дублированного выражения A (которое, по меньшей мере, в два раза уродливее, требует двойного редактирования и вносит совершенно ненужные ошибки, которые даже не проявляются последовательно), или давая выделенная ячейка, или использующая VBA (которая является собственностью Microsoft, таким образом, непривлекательная, а не в Calc).
Есть некоторые обходные пути для особых случаев, таких как Iferr () в Excel (это не в Calc) и манипулирование числами с помощью функций «условного» типа, таких как Abs (), округления и Mod (). Но этого недостаточно для того, чтобы делать то, что я хочу, большую часть времени (и манипулирование числами также не элегантно и неясно). Есть ли шанс, что есть функция или простой набор функций, которые я пропустил, которые могут это сделать? Кажется, это большая вещь, которую стоит оставить.
=IF(NORMINV(RAND(),1,0.3)<0,NORMINV(RAND(),1,0.3),NORMINV(RAND(),1,0.3)*-1)
не работает, потому что тест и результат отличаются от распределения.