gpt4 book ai didi

vba - 在 Excel 中手动编辑依赖关系树

转载 作者:行者123 更新时间:2023-12-03 19:46:42 28 4
gpt4 key购买 nike

我有一个大型 Excel 电子表格。它包括许多运行各种查找功能的数据表。为了使版本控制更容易,我目前正在将这些数据表提取到单独的 .csv 文件中,以便可以正确区分它们。不幸的是,它们包含一些公式,当我将文件转换为静态 .csv 时,它们显然无法正常工作。

我目前的解决方案是,在无法避免计算的地方,将计算移动到主工作簿中自己的单元格并命名该单元格。我们就叫它ExampleCalc .然后,在数据表中计算所在的单元格中,我改为输入 ref:ExampleCalc .然后进行查找,我编写了以下 UDF:

Function RaceLookup(lookupString As Variant, lookupTable As Range, raceID As Range, cleanIt As Boolean) As Variant
' Helper function to make the interface formulae neater
Dim temp As Variant
Dim temp2 As String
Dim inpString As Variant
Dim id As Double

id = raceID.Value

If TypeOf lookupString Is Range Then
inpString = lookupString.Value
Else
inpString = lookupString
End If

With Application.WorksheetFunction
temp = .Index(lookupTable, id, .Match(inpString, .Index(lookupTable, 1, 0), 0))
If Left(temp, 4) = "ref:" Then
temp2 = Right(temp, Len(temp) - 4)
temp = Range(temp2).Value
End If

If cleanIt Then
temp = .clean(temp)
End If
End With

RaceLookup = temp

End Function

这是一个标准 INDEX在数据表上查找。如果它找到的条目不以 ref: 开头,它只是返回它。如果它确实以 ref: 开头, 它剥离了 ref:并将剩下的任何内容视为单元格名称引用。所以如果值 INDEX返回是 ref:ExampleCalc ,然后它会返回 ExampleCalc 的内容细胞。

问题是 ExampleCalc不会添加到依赖关系树中。这意味着如果 ExampleCalc 的值更改,检索到的值不会更新。有什么方法可以让函数添加 ExampleCalc到单元格的依赖树?或者,有没有更明智的方法来做到这一点?

最佳答案

我找到的解决方案是添加该行

Application.Volatile True   ' this causes excel to know that if the function changes, it should re calculate.  You will still need to click "Calculate Now"

进入功能。但是,正如我的代码注释所指出的,如果唯一的变化是在功能输出中,您将不得不手动触发重新计算。

https://msdn.microsoft.com/en-us/library/office/ff195441.aspx了解更多信息。

关于vba - 在 Excel 中手动编辑依赖关系树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39273212/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com