一些excel IF语句可能会变得相当长,我正在寻找一种更简单的方法来编写它们。例如,如果我要写:
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]
谢谢!
答案 0 :(得分:1)
好吧,为什么不这样做
=如果($ B $ 4 + 13 = 7,7,FALSE)
比较分为两部分。您知道要比较的内容,因此不要再次编写公式,只需使用TRUE部分中的比较值。
编辑:使用重复公式简化长而复杂的IF语句的另一种方法:
=IF(A1="x",<complex formula>*100,<complex formula>*200)
重写
=<complex formula>*if(A1="x",100,200)
答案 1 :(得分: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)。