gpt4 book ai didi

excel - Excel 是否计算提供给 IF 函数的两个结果参数?

转载 作者:行者123 更新时间:2023-12-01 22:03:44 26 4
gpt4 key购买 nike

Excel 的 if 函数采用三个参数:一个条件、一个 if-true 值和一个 if-false 值。 Excel 是否计算出所有三个参数的值,还是仅计算出条件的值和相应的结果?

说明:我不是想知道 if结果是什么,我想知道它是否计算在计算函数结果之前所有参数的值。

这相当于询问 if 函数是否使用惰性求值或严格求值。例如,以下伪代码:

x = 5;
print x>2 ? "Bigger" : "Smaller" + 1/0

在具有完全严格求值的语言中会抛出被零除的异常,因为它将求值 1/0,即使 不需要结果?: 运算符。

在惰性计算语言中,?: 运算符会在决定计算哪个表达式之前先计算 x>2

问题在于,在 Excel 中,1/0 会生成一个可以存在于表达式中的合法值(恰好是 #DIV/0!)。因此,仅调用 =if(true,1,1/0) 不会显示 Excel 是否正在计算 1/0

最佳答案

非常容易测试

? iif(true, 1, 1/0) 'run-time error: division by zero

我假设您真正的意思是 iif() - 在 VBA 中这不会“短路”,因此在以下情况下您应该使用 If..Then..Else..End If这可能是个问题。

好的 - 测试你真正问的问题:

'In a VBA module
Function TruePart()
MsgBox "True part"
TruePart = "True"
End Function


Function FalsePart()
MsgBox "False part"
FalsePart = "False"
End Function

在单元格中:=IF(TRUE,truepart(),falsepart())

每次计算 IF() 单元格时仅获取一个消息框。

作为进一步验证,这将为您提供两个消息框 - 每个消息框一个:

Sub Tester()
Debug.Print IIf(True, TruePart(), FalsePart())
End Sub

关于excel - Excel 是否计算提供给 IF 函数的两个结果参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10440104/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com