在 Excel 中计算 (If A=B, then "" else A) 而不计算 A 两次
Calculate (If A=B, then "" else A) in Excel without evaluating A twice
我打算执行以下类型的公式:
=IF(VOL("Site";"Date")=0;"";VOL("Site";"Date"))
其中 VOL 是我通过加载项使用的功能。此插件的局限性之一是禁止在单个公式内调用两个插件函数。 IE。我上面写的代码是无效的,会导致错误。
有没有办法实现以下目标:
=IF(LHS=RHS;"Value if True";LHS) (2)
其中 LHS 是左侧,RHS 是右侧,因此表达式检查 LHS 是否等于 RHS,如果是则打印相应的值,否则打印 LHS,没有 Excel 两次评估LHS?
除了在一个单元格中导入公式,如果 IF 语句中的逻辑表达式为假,则将该单元格作为要打印的值,我还没有找到任何解决方案,但这将成为一个相当广泛的问题"double work"。像 (2) 这样的解决方案也会变得更具可读性,尤其是当 LHS 的类型为“'C:\pathtofile[filename]SheetName!'Cell”时。
希望有人对此有一些巧妙的解决方案
这是一种(相当丑陋的)方法,只使用公式:
=IFERROR(1/IFERROR(1/vol("Site";"Date"),0),"")
这利用了 IFERROR
函数,它可以执行您想要的操作,但仅测试错误。除以零会导致错误,因此如果 VOL
为零,则内部 IFERROR
return 为零,否则为 1/VOL
。现在我们需要再次取倒数return原来的值,所以我们重复这个技巧,这次return如果有错误""
如果您想测试另一个值(例如 3),只需使用类似:
=IFERROR(3+1/IFERROR(1/(vol("Site";"Date")-3),0),"")
一种更简洁的方法是在 VBA 中创建一个函数,它包装 VOL
函数并执行您想要的操作:
Public Function MyVol(varSite As Variant, varDate As Variant) As Variant
MyVol = vol(varSite, varDate)
If MyVol = 0 Then MyVol = ""
End Function
假设您可以从 VBA.
调用 VOL
我打算执行以下类型的公式:
=IF(VOL("Site";"Date")=0;"";VOL("Site";"Date"))
其中 VOL 是我通过加载项使用的功能。此插件的局限性之一是禁止在单个公式内调用两个插件函数。 IE。我上面写的代码是无效的,会导致错误。
有没有办法实现以下目标:
=IF(LHS=RHS;"Value if True";LHS) (2)
其中 LHS 是左侧,RHS 是右侧,因此表达式检查 LHS 是否等于 RHS,如果是则打印相应的值,否则打印 LHS,没有 Excel 两次评估LHS?
除了在一个单元格中导入公式,如果 IF 语句中的逻辑表达式为假,则将该单元格作为要打印的值,我还没有找到任何解决方案,但这将成为一个相当广泛的问题"double work"。像 (2) 这样的解决方案也会变得更具可读性,尤其是当 LHS 的类型为“'C:\pathtofile[filename]SheetName!'Cell”时。
希望有人对此有一些巧妙的解决方案
这是一种(相当丑陋的)方法,只使用公式:
=IFERROR(1/IFERROR(1/vol("Site";"Date"),0),"")
这利用了 IFERROR
函数,它可以执行您想要的操作,但仅测试错误。除以零会导致错误,因此如果 VOL
为零,则内部 IFERROR
return 为零,否则为 1/VOL
。现在我们需要再次取倒数return原来的值,所以我们重复这个技巧,这次return如果有错误""
如果您想测试另一个值(例如 3),只需使用类似:
=IFERROR(3+1/IFERROR(1/(vol("Site";"Date")-3),0),"")
一种更简洁的方法是在 VBA 中创建一个函数,它包装 VOL
函数并执行您想要的操作:
Public Function MyVol(varSite As Variant, varDate As Variant) As Variant
MyVol = vol(varSite, varDate)
If MyVol = 0 Then MyVol = ""
End Function
假设您可以从 VBA.
调用VOL