大佬教程收集整理的这篇文章主要介绍了Excel 持续评估是否满足条件,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图仅在满足特定条件时才对表达式求值。我这样做的原因是允许用户“锁定”一个值,以便对公式中其他变量的更改不再起作用。
我尝试使用下面的功能,该功能在我关闭工作表并再次打开之前效果很好。
我已经尝试使用作为参数传递的附加单元格在未锁定时将值复制给它,如果是这样,则将其复制回来,但是 excel 不允许在函数内进行其他单元格修改。
有什么办法可以实现这个功能吗?
Function EvaluateIf(Expression As String,condition As Boolean) As Variant
Application.Volatile
Dim myText As String
Dim myVal As Variant
If condition Then
myVal = Application.Evaluate(Expression)
Else
myText = Application.Caller.Text
If IsNumeric(myText) Then
myVal = Val(myText)
Else
myVal = myText
End If
End If
EvaluateIf = myVal
End Function
EDIT1:
我需要将此函数应用于多个单元格,因此我无法对单元格进行硬编码
EDIT2:
我目前在 excel 中这样调用函数:
=EvaluateIf(N$7*IF(ISBLANK(P$7);1;P$7)*IF(ISBLANK(R$7);1;R$7);NOT(v$7))
试试这个 - 当从工作表调用时,使用此方法来绕过适用于使用 UDF 的限制时,通常需要注意。
Function EvaluateIf(expression,condition As Boolean,BACkup As RangE) As Variant
Dim myText As String
Dim myVal As Variant
Dim bak
bak = BACkup.Value
If condition Then
myVal = expression
If myVal <> bak Then 'update cached value?
Application.Evaluate "SetBACkup(""" & BACkup.parent.Name & """,""" & _
BACkup.Address & """,""" & myVal & """)"
End If
Else
myVal = bak
End If
EvaluateIf = myVal
End Function
Sub SetBACkup(ws As String,addr As String,v)
Application.Calculation = xlCalculationManual 'avoid infinite loop!
ThisWorkbook.Sheets(ws).Range(addr).Value = v
Application.Calculation = xlCalculationAutomatic
End Sub
以上是大佬教程为你收集整理的Excel 持续评估是否满足条件全部内容,希望文章能够帮你解决Excel 持续评估是否满足条件所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。