排序时的Excel重新计算顺序 - 如何使其正确?

时间:2013-06-25 12:03:03

标签: excel excel-vba excel-formula excel-2010 vba

我有型号代码:

Dim a(1 To 100) As Integer
Function func1(i As Integer)
    a(Application.Caller.Row) = i
    Debug.Print "func1: " & Application.Caller.Row & " - " & i
    func1 = "value"
End Function
Function func2(r As Range)
    func2 = "other"
    If (a(Application.Caller.Row) > 50) Then
       func2 = "other"
    Else
       func2 = "first"
    End If

   Debug.Print "func2: " & Application.Caller.Row & " - " & a(Application.Caller.Row)
End Function

和电子表格:

col A col B Col C
51 = func1(A1)= func2(B1)
9 = func1(A2)= func2(B2)
8 = func1(A3)= func2(B3)

image

如果我使用Col C对表进行排序,我会执行以下操作:

func1:3 - 8
func2:3 - 8
func1:2 - 9
func2:2 - 9
func2:1 - 8< - func2在func1之前调用,在这种情况下提供incorect值..
func1:1 - 51

如果我计算表格,我仍然得到相同的序列:

func1:3 - 8
func2:3 - 8
func1:2 - 9
func2:2 - 9
func2:1 - 51< - func2在func1之前调用 func1:1 - 51

Excel 2010 32位(最新版本)Windows 7 64位

1 个答案:

答案 0 :(得分:0)

目前,C列实际上是func2(func1(A))。 作为一个简单的修复,你可以定义func3()= funct2(func1()),这将消除C对B的依赖?