我正在尝试构建一个excel-formula,该格式检查条件部分是否大于5,而不复制公式。例如,如果公式返回10,则应返回5(最大5(。如果是3,则只需返回3。
我可以轻松地使用 IF()
扩展公式,但是我需要复制公式以在我的情况下使用它,如果条件是错误的再次。可读性将是可怕的两倍。
我正在寻找max((函数或某种智能方法来处理此问题,如果条件大于大于条件,则首先评估条件并返回最大值。有什么建议吗?
这是我的公式:
IF(DA5746/1000>=1;DA5746/1000;1)*IF(CX5746<>"";1,1;1)*IF(M5746<>"";1,25;1)*IF(CL5746>0;IF(CL5746>1;CL5746;1+CL5746);1))
这是我想避免
的公式IF(IF(DA5746/1000>=1;DA5746/1000;1)*IF(CX5746<>"";1,1;1)*IF(M5746<>"";1,25;1)*IF(CL5746>0;IF(CL5746>1;CL5746;1+CL5746);1))>5;5;IF(DA5746/1000>=1;DA5746/1000;1)*IF(CX5746<>"";1,1;1)*IF(M5746<>"";1,25;1)*IF(CL5746>0;IF(CL5746>1;CL5746;1+CL5746);1)))
psudo-solution:
IF([condition]>5;5;[reuse condition])
编辑:我知道我可以拥有两个单独的单元格,其中第一个单元格具有长公式,而另一个单元格仅引用了这一点。这不是我要寻找的解决方案。
通常的方法是将单独的单元格用于大公式或类似的东西:
=MIN(big_formula,5)
因此,在您的情况下(使用; saparator(:
=MIN(IF(DA5746/1000>=1;DA5746/1000;1)*IF(CX5746<>"";1,1;1)*IF(M5746<>"";1,25;1)*IF(CL5746>0;IF(CL5746>1;CL5746;1+CL5746);1));5)
注意:
关键是避免使用IF
。