Excel公式计算一次然后删除

我有一个excel公式:

=SplitKey(GetSysCd(INDEX([ReportValue],MATCH("mtr_make_model",[FieldName],0)),INDEX([ListName],MATCH("mtr_make_model",[FieldName],0))), 0) 

它在VBA中运行几个子程序,但主要是匹配值并将这些值插入到单元格中。 当它find“mtr_make_model”的值时,它将运行并匹配sys代码表中的值。 我遇到的问题是它正在计算一次,然后它将删除公式,现在只有值…如果我去mtr_make_model字段并更改值,公式不会重新计算。 有没有人听说过这种情况? 这是由于在VBA代码中的东西? 我如何使这个公式保持不变,如果某些值发生变化,公式重新计算?

提前致谢。

这是两个function:

  Public Function GetSysCd(ByVal name As String, sysCdTableName As String) As String Dim r As Integer Dim sysCdTable As Range Dim nameList As Variant Dim sysCd As String On Error GoTo GetSysCd_Error Set sysCdTable = Worksheets("sys_cd").Range(sysCdTableName) nameList = WorksheetFunction.Index(sysCdTable, 0, 2) r = WorksheetFunction.Match(name, nameList, 0) sysCd = WorksheetFunction.Index(sysCdTable, r, 1) GetOutOfHere: On Error GoTo 0 GetSysCd = sysCd Exit Function GetSysCd_Error: sysCd = "" GoTo GetOutOfHere End Function Public Function SplitKey(s As String, v As Integer) Dim aString As Variant Dim r As Integer If Len(s) > 2 Then aString = Split(s, "_") If v = 0 Or v = 1 Then SplitKey = aString(v) Else SplitKey = aString(0) End If Else SplitKey = "" End If End Function 

我不认为这个函数是相关的,而只是一个函数的问题,当公式中的一个variables改变时不重新计算。

问题可能是Excel仅重新计算其中一个参数更改时的函数,并且您的GetSysCd函数引用不在其参数列表中的范围

Set sysCdTable = Worksheets(“sys_cd”)。Range(sysCdTableName)

sysCdTableName只是一个string而不是引用。

您可以通过将Application.Volatile True添加到每个函数的顶部来实时重新计算函数。