2016-01-22 96 views
2

一些优秀的IF语句可以变得相当长,我正在寻找一种更简单的方式来写它们。例如,如果我是这样写:Excel公式:如果条件那么做那样的条件

If($B$4+13=7,$B$4+13,FALSE) 

,我认为它会更容易放:

If($B$4+13=7,[Do the left hand side of the equation without making me re-type it], FALSE) 

特别是如果病情十分漫长而复杂的。

有什么我可以代替写:

[Do the left hand side of the equation without making me re-type it] 

谢谢!

+4

我能想到的唯一事情就是将左手部分放在它自己的细胞中。即提前预先计算它,然后您可以在多个地方引用该细胞。 – Ditto

+0

您的目的与[IFERROR功能]类似(https://support.office.com/zh-cn/article/IFERROR-function-F59BACDC-78BD-4924-91DF-A869D0B08CD5),我们不再需要测试在使用预期公式获得结果之前出现错误。目前还没有** IFTRUE **功能,但它们没有足够的东西来创建,所以你可能会在未来的版本中获得幸运。与此同时,一个简单的UDF可以实现这一点。 [历史]在IFERROR临近之前,人们正在使用UDF来完成IFERROR行为。如果你提供了样本公式,我怀疑它可以改进。 – Jeeped

回答

1

那么,为什么不这样做

= IF($ B $ 4 + 13 = 7,7,FALSE)

比较有两个部分。你知道你想要比较什么,所以不要再写公式,只用TRUE部分的比较值。

编辑:另一种方法来简化一个长期的,复杂的IF与重复公式声明:

=IF(A1="x",<complex formula>*100,<complex formula>*200) 

重写

=<complex formula>*if(A1="x",100,200) 
+0

良好的解决方法 - 技术上我相信@同上在评论中的推荐回答了问题的直接问题,但总的来说,我认为重新构造这样的公式是更好的方法来看待事物。我会把它放在像MAX(A1,0)而不是“= IF(A1> 0,A1,0)”那样的事情上。 –

+1

@ Grade'Eh'Bacon,正好。根据IF声明中正在进行的计算,简化公式的方法可能会有所不同。 – teylyn

0

Jeeped提出了UDF,所以我想我会采取刺伤在这里:

Function SUPERIF(LeftCondition, RightCondition, Optional Operator = "EQUALS", Optional Side = "LEFT") 
Dim Result 

If (Side = "LEFT") Then 
    Result = LeftCondition 
    ElseIf (Side = "RIGHT") Then 
    Result = RightCondition 
    Else 
    SUPERIF = xlErrValue 
End If 

If (Operator = "EQUALS") Then 
    If (LeftCondition = RightCondition) Then 
    SUPERIF = Result 
    Else 
    SUPERIF = False 
    End If 
End If 

If (Operator = "GREATER") Then 
    If (LeftCondition > RightCondition) Then 
    SUPERIF = Result 
    Else 
    SUPERIF = False 
    End If 
End If 

If (Operator = "GRTEQL") Then 
    If (LeftCondition >= RightCondition) Then 
    SUPERIF = Result 
    Else 
    SUPERIF = False 
    End If 
End If 

If (Operator = "LESS") Then 
    If (LeftCondition < RightCondition) Then 
    SUPERIF = Result 
    Else 
    SUPERIF = False 
    End If 
End If 

If (Operator = "LESSEQL") Then 
    If (LeftCondition <= RightCondition) Then 
    SUPERIF = Result 
    Else 
    SUPERIF = False 
    End If 
End If 

If (Operator = "NOT") Then 
    If (LeftCondition <> RightCondition) Then 
    SUPERIF = Result 
    Else 
    SUPERIF = False 
    End If 
End If 

End Function 

这将作为一个公式输入如下:=SUPERIF(A1, B1, "GREATER", "RIGHT")哪个会测试以查看A1是否大于B1,如果是,则返回B1的值。

我最后两个参数是可选的,默认值是“EQUALS”和“LEFT”,所以你可以只写SUPERIF([some formula], [some other formula]),只要两者的结果相同,那么如果将返回左边的值。对于您提供的示例,它将写为=SUPERIF($B$4+13,7)

请注意,如果您使用UDF,则需要使用启用了宏(* .xlsm)的宏保存工作簿。