在Excel VBA中,我的项目将公式保存在表格中。通过 VBA,该公式被退休为
String
变量 tempFormula
元素被替换为相关源单元格中的值。
例如,如果存储的公式为
(Actual/Total) * 100
并且术语 Actual
和 Total
替换为数值,如 80
和 120
,则 tempFormula
看起来像这样 (80/120)* 100
。
执行
Application.Evaluate(tempFormula)
会给出所需的结果,对于本示例,它将是 66.67
。
当
String
变量 tempFormula
替换为 "IIf("Yes" = "Yes", 20, 0) + IIf("Yes" = "Yes", 20, 0)"
后发展为表达式时,我遇到错误。我的意思是说,VBA 在到达语句时会抛出错误
tempResult = evaluate("IIf("Yes" = "Yes", 20, 0) + IIf("Yes" = "Yes", 20, 0)")
我什至尝试过
tempResult = evaluate("IIf("Yes" = "Yes", 20, 0) + IIf("Yes" = "Yes", 20, 0)").Formula
谁能帮我解决这个问题。我不想在工作簿中的其他位置使用临时单元来评估和使用结果,除非这是解决此问题的唯一解决方法。
如果您使用Evaluate,则无法使用IFF。自己尝试一下:
tempResult = Evaluate("If("Yes" = "Yes", 20, 0) + If("Yes" = "Yes", 20, 0)")
在 VBA 中你可以使用:
Dim i
i = IIF("Test" = "Test", 20, 0) + IIF("TEST" = "TEST1", 0, 30)
Debug.Print i 'i would give 50 here
但 IIF 不是普通的 Excel公式,因此评估会引发错误。
对于更换部件造成的混乱,我深表歉意,但我希望现在很清楚,在这种情况下将
IIF
更改为 IF
。