excel vba 使用 IIF() 对字符串进行 Evaluate()

问题描述 投票:0回答:1

在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

谁能帮我解决这个问题。我不想在工作簿中的其他位置使用临时单元来评估和使用结果,除非这是解决此问题的唯一解决方法。

excel vba evaluate
1个回答
0
投票

如果您使用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

© www.soinside.com 2019 - 2024. All rights reserved.