IF函数 - 有没有办法避免重复公式

时间:2014-03-12 17:33:23

标签: excel if-statement excel-formula

不能相信我不知道这一点,但如果逻辑测试依赖于它,有没有办法避免在if语句中重复公式?

= IF((SUMIFS公式)= 0,"", SUMIFs公式

我想在错误的场景中用短的替换那个SUMIFS函数,这将告诉它只是以编程方式重复它最初测试的公式。重复两次公式必然会对处理速度产生不利影响。也许可以忽略不计,但想要在这里寻求最佳实践。感谢。

7 个答案:

答案 0 :(得分:24)

您可以强制执行#DIV/0!之类的错误,然后使用IFERROR,例如

=IFERROR(1/(1/SUMIFS_formula),"")

答案 1 :(得分:8)

您可以为公式指定名称并使用名称 ..............参见:

Assigning a name to a formula

相关摘录 -

  

例如,假设我们经常使用如下公式:   =SUM(A1:A100)-SUM(B1:B100),它位于A101,并被复制到第101行的许多列中。在这种情况下,最好是   创建一个自定义公式,在第101行的每个单元格中执行此操作。这里   是如何;

     

1)选择单元格A101(这是至关重要的)。

     

2)转到插入>名称>定义和   在"工作簿中的名称"框类型:SalesLessCosts

     

3)现在点击进入   "指的是"框和类型:=SUM(A1:A100)-SUM(B1:B100)然后单击   添加。

     

现在,您可以使用=SalesLessCosts替换单元格A101中的公式。   您也可以在第101行复制它,将更改其相对值   参考就像公式=SUM(A1:A100)-SUM(B1:B100)一样。该   这样做的原因完全取决于我们之前选择A101的事实   转到插入>名称>在中定义和使用相对引用   =SUM(A1:A100)-SUM(B1:B100)当我们将其添加到"指的是"框。

答案 2 :(得分:4)

如果你需要做的只是隐藏零,有一个简单的方法:

  • 选择要隐藏零的所有单元格
  • 进入自定义数字格式
  • 将格式设置为" General; General;"

自定义格式的结构为[正数]; [负数]; [零] 通过将最后一部分留空,您实际上隐藏了零,但显示了其他所有内容。

优于条件格式的优点是您可以在任何背景上使用它。

我有时使用的一个巧妙的技巧是使用&#34 ;;;;"的自定义格式完全隐藏单元格值。这样,您可以将图像放在单元格内,就像条件格式化图像一样,根本看不到值。

答案 3 :(得分:2)

尝试使用SUBSTITUTE这样的功能:

=SUBSTITUTE( VLOOKUP( H4; $D$5:$E$8; 2; 0 ); $H$1; $I$1 )

以下是一个例子:

Example

这里我不想重复两次的公式是VLOOKUP函数。 VLOOKUP的结果是在另一个表中找到的字符串(例如:" Green")。

我想检查该字符串是否与$H$1中的特定字符串值匹配(此处为"黄色")。

  • 如果是,SUBSTITUTE将其替换为$I$1(您想要的错误字符串。此处," FORBIDDEN")。
  • 如果没有,则显示VLOOKUP结果字符串(正常的授权输出,如"绿色")。

这对我很有用,因为我的实际公式很长,所以我不想写两次。 我也不想使用两个不同的单元格,因为我已经在10列上应用了这个公式,这意味着我应该添加额外的10列以使其工作。

答案 4 :(得分:1)

实际上,自Excel 2007以来,IFERROR语句完全 OP所要求的内容。从帮助文件:

说明 如果公式求值为错误,则返回指定的值; 否则,返回公式的结果。 [斜体矿]

<强>语法: IFERROR(value, value_if_error)

答案 5 :(得分:0)

这是一个黑客 - 取决于您是否只对显示的值感兴趣,或者您是否需要在另一个公式中使用该值:

将您的SUMIF公式放入单元格(不包含IF部分)

创建条件格式设置规则,当单元格值为0时,将字体颜色设置为背景颜色

嘿,你得到了理想的结果。

正如我所说 - 这是一个黑客,但它确实阻止了双重评估。

我没有注意到“干净”的解决方案。

答案 6 :(得分:0)

在某些情况下,MAX()MIN()可以做得很好。

,例如:

=IF(SUMIFSformula>0,SUMIFSformula, 0)

可缩短为:

=MAX(0,SUMIFSformula)