寻找缩短 IF 公式的解决方案

寻找缩短 IF 公式的解决方案

我有一个长公式,其结构如下:

=IF(!X!<>0,!X!+A1,"")

在哪里!X!是一个非常长的公式。

有什么解决方案可以避免重复 !X! 两次?我需要它有两个原因:

  1. 使表格用户能够阅读公式
  2. 减少处理时间

我感谢任何帮助。

谢谢,Dio

答案1

另一种方法是使用双重倒置

=IFERROR(1/(1/really_long_formula)+A1,"")

如果非常长的公式评估结果为0,你将得到一个除以零的结果,并且IFERROR()会捕获它!

请注意,通常的方式(也是最好的方法)处理这个要求需要用到辅助细胞。

答案2

显而易见的答案是将公式放在远离主表的工作单元格中。例如,如果您使用H1,请将其设置为:

=!X!

你的公式就变成:

=IF(H1<>0,H1+A1,"")

这在其他任何编程语言中都是很典型的做法。

答案3

你真的需要结果为""false 吗?如果你只需要单元格=ISNUMBER()空白(例如你以后不会使用类似的东西),你可以使用条件格式以虚假的手段掩盖其内容。

您将应用于单元格的条件格式,以便它不会显示任何事物是自定义格式"",如下所示(它是葡萄牙语,但你明白我的意思):

空白单元格的自定义格式

正如预期的那样,单元格中的公式将简单如是=!X!+A1

条件格式公式可以=!X!=0,但这会迫使重新计算!X!,而这并不是你想要的(你的“第 2 点”)。最好通过使用来控制细胞本身=B1=A1(假设我们的细胞是B1)——这意味着!X! = 0

即使你需要单元格内容实际上是 "",通常可以在工作表中进行微小的改动,以便使用此方法。如果是这种情况,请留下评论描述情况。

答案4

尚未建议的一个选项是创建用户定义函数。您需要打开菜单栏中的“开发人员”选项卡(谷歌搜索)并创建一个模块。

 public function udf_myCalc(ValueToAdd as double)
    dim myvar as double
    dim udf_myCalc as double
    myvar = .. put the logic of !X! in here

    if myvar<>0 then 
        udf_myCalc = myvar + ValueToAdd
    else
        udf_myCalc = ValueToAdd
    end if
 end function

然后在公式栏中执行

=udf_myCalc(A1)

注意:这现在变成了 .xlsx(带有宏)文件,可能需要在公司网络中获得额外权限,因为宏可用于恶意目的,而某些电子邮件过滤器会阻止它们。这些函数没有记录,因此您需要提供有关函数正在做什么的注释,我发现将所有函数称为 udf_xxxxx 很有用,这样可以清楚地表明它不是内置函数

UDF 还存在其他一些问题。请参阅此链接获取一些有用的提示 http://www.decisionmodels.com/calcsecretsj.htm

相关内容