间接()波动:如果

时间:2018-03-23 13:16:31

标签: excel vba excel-vba volatile excel-indirect

我需要在公式中使用indirect函数,因为它引用了可以删除的工作表2。 由于其波动性,我不想在不需要时触发间接功能。所以我写下这个公式:

=IF(abc=1;"";INDIRECT("Sheet 2!zzz"))

我有我想要的结果(“”或zzz值)。 但它似乎总是不稳定! 我用这个宏测试它(在http://www.decisionmodels.com/calcsecretsi.htm上找到):

Option Base 1
Option Compare Text
'-----------------------
Public jCalcSeq As Long             ''' calculation sequence counter
'
Public Function CalcSeqCountRef(theRange As Range) As Variant
    '
    ' COPYRIGHT © DECISION MODELS LIMITED 2000. All rights reserved
    '
    ' increment calculation sequence counter at Full Recalc or when theRange changes
    ' fixed for false dependency
    '
    jCalcSeq = jCalcSeq + 1
    CalcSeqCountRef = jCalcSeq + (theRange = theRange) + 1
    Debug.Print Application.Caller.Formula
End Function
Sub resetcounter()
    jCalcSeq = 0
End Sub

我怎么能把这个公式写成不易变形?

谢谢你:)。

1 个答案:

答案 0 :(得分:1)

即使使用IF或CHOOSE等,也不能使包含易失性函数的公式不易挥发:如果公式包含易失性函数或引用易失性函数的名称,则该公式被标记为易失性。