程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Excel 持续评估是否满足条件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Excel 持续评估是否满足条件?

开发过程中遇到Excel 持续评估是否满足条件的问题如何解决?下面主要结合日常开发的经验,给出你关于Excel 持续评估是否满足条件的解决方法建议,希望对你解决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,请注明来意。
标签: