难以置信我不知道这个,但如果逻辑测试依赖于它,有没有办法避免在if语句中重复使用公式?
也就是说,
=IF((SUMIFS 公式)=0,"",SUMIFs 公式)
我想用一些简短的东西来替换false场景中的SUMIFS函数,告诉它只需以编程方式重复最初测试的公式。 重复两次公式肯定会对处理速度产生不利影响。 可能可以忽略不计,但希望采用最佳实践。 谢谢。
难以置信我不知道这个,但如果逻辑测试依赖于它,有没有办法避免在if语句中重复使用公式?
也就是说,
=IF((SUMIFS 公式)=0,"",SUMIFs 公式)
我想用一些简短的东西来替换false场景中的SUMIFS函数,告诉它只需以编程方式重复最初测试的公式。 重复两次公式肯定会对处理速度产生不利影响。 可能可以忽略不计,但希望采用最佳实践。 谢谢。
#DIV/0!
,然后使用IFERROR
函数进行处理,如下所示:=IFERROR(1/(1/SUMIFS_formula),"")
。ISERROR
函数;第二,重写公式,使其在特定条件为真时抛出错误,否则返回“正确”的值。向你致敬! - Floris=LET( x, SUMIFS(formula), IF(x=0,"",x))
- Greg_D=SUM(A1:A100)-SUM(B1:B100)
这样的公式,它位于A101
中,并且在第101行的许多列中进行复制。在这种情况下,最好创建一个自定义公式,在第101行的每个单元格中执行此操作。如下:=SUM(A1:A100)-SUM(B1:B100)
,然后单击添加。=SalesLessCosts
。您还可以将其复制到第101行,并且它将更改其相对引用,就像公式=SUM(A1:A100)-SUM(B1:B100)
一样。它能够这样做的原因是我们在转到“插入”>“名称”>“定义”之前选择了A101,并在将其添加到“引用”框中时使用了相对引用。LET
公式可用于此确切场景。您可以将公式定义为变量,然后在同一单元格中引用该变量以在公式中使用。
LET
公式格式如下:=LET(name,name_value,calculation)
以下是如何使用SUMIF示例使您无需重复公式:
在此屏幕截图中,我们有一个数组A1:B7。 如果ColA中的名称为“apple”,则我们要对值(Col B)求和。
为此,我们有一个标准的SUMIFS公式:
=SUMIFS(B1:B7,A1:A7,"apple")
E2单元格中显示公式。E3单元格中显示结果。
为了在不重复公式的情况下将其放入IF
语句中,我们可以使用截图中显示的LET
。
我们创建一个变量,将SUMIFS
公式作为该变量的值。然后,我们编写IF
语句,使用变量名称而不是多次重写公式。
=LET(name,name_value,calculation)
变量名: sumapples
变量值: SUMIFS(B1:B7,A1:A7,"apple")
计算: IF(sumapples=0,"",sumapples)
将它们放在 LET
函数中,它看起来像这样:
=LET(sumapples,SUMIFS(B1:B7,A1:B7,"apple"),IF(sumapples=0,"",sumapples))
这个LET
函数可以在任何Excel公式中使用,非常有用,可以缩短具有重复的长公式。
如果您愿意,可以通过命名多个变量来增加复杂度。
=LET(name,name_value,name2,name_value2,calculation)
SUBSTITUTE
函数,如下所示:=SUBSTITUTE( VLOOKUP( H4; $D$5:$E$8; 2; 0 ); $H$1; $I$1 )
这里有一个示例:
我不想重复两次的公式是VLOOKUP
函数。
VLOOKUP
的结果是在另一张表格中找到的字符串(例如:“绿色”)。
我想检查该字符串是否与$H$1
中特定的字符串值匹配(这里是“黄色”)。
SUBSTITUTE
将其替换为$I$1
(您想要的错误字符串。这里是“FORBIDDEN”)。VLOOKUP
结果字符串(正常授权输出,如“绿色”)。 这对我很有用,因为我的实际公式非常长,所以我不想重复写它。 我也不想使用两个不同的单元格,因为我已经在10列上应用了这个公式,这意味着我应该添加额外的10列才能使其工作。
MAX()
或MIN()
可以发挥出色的作用。=IF(SUMIFSformula>0,SUMIFSformula, 0)
可以简化为:
=MAX(0,SUMIFSformula)
语法:IFERROR(value, value_if_error)
我后来意识到这已经被 @barry houdini 回答过了。
这里有一个技巧 - 取决于您是只对显示的值感兴趣,还是需要在另一个公式中使用该值:
将您的SUMIF
公式放入单元格中(不包括IF
部分)
创建一个条件格式规则,当单元格值为0
时将字体颜色设置为背景颜色
嘿,你就得到了想要的结果。
正如我所说 - 这是一个技巧,但它确实可以防止双重评估。
据我所知,没有“干净”的解决方案。
IF(cell=0,"",cell)
。这是一个非常好的问题,但据我所知,没有一个真正好的答案。 - Floris""
显示为0
。 - Dmitry Pavliv=SUBSTITUTE(SUBSTITUTE("Z" & SUMIFS(...) & "Z", "Z0Z", ""), "Z", "")
。 - Alex K.