Excel的公式求值错误(Excel Evaluate formula error)

2019-09-17 22:21发布

我的VBA代码是

Function yEval(entry As String)
yEval = Evaluate(entry)
Application.Volatile
End Function

在Sheet在细胞F4我有式=yEval(Sheet2!E19) Sheet 1上单元格D4包含数12 Sheet 2中!I19包含字符串$ Q

如果Sheet2中!E19具有字符串INDIRECT( “减价!” &Sheet2的!I19:12)或间接( “减价!” &Sheet2的!I19和工作表Sheet1!D4)或间接( “减价!” &Sheet2的!I19和 “工作表Sheet1!d” &行()+ 12)从片撬开公式返回结果!$ Q12

如果Sheet2中!E19具有字符串INDIRECT( “减价!” &Sheet2的!I19及地址(行(),4))或间接( “减价!” &Sheet2的!I19和 “工作表Sheet1!d” &行())公式返回结果0好像忽略行()函数

如何使工作这个公式依赖于行数来改变D4的一部分,如果行5则D5

INDIRECT("pries!"&Sheet2!I19&Sheet1!d4)

Answer 1:

有趣的问题......为了进一步了解这个问题从眼前尝试这些或监视窗口:

?[indirect("rc",0)]
?[index(a:a,row())]
?[offset(a1,row()-1,column()-1)]

奇怪的是,他们都执行为A1无论哪个小区是活动的。 它的夸克Evaluate[]当返回值是一个范围参考文献相处理以A1代替活性(呼叫)细胞。 你能想到的row()等同于row(RC)在RC-符号相对于A1评估。

然而,注意,变更]&""]中的三个公式上述结果中的误差在第一但预期的结果中的最后两个,使得row()现在评估相对于所述活动单元格。 如此看来,评估是否运行正常时不同的返回值不是一个范围引用。

更新

根据这些意见,你可以用指数为行引用和间接移动外:

Sheet1!F4:=INDIRECT(yEval(Sheet2!E19))
Sheet2!E19:"pries!"&Sheet2!I19&INDEX(Sheet1!D:D,Row())

...或者只是使用RC样式引用,而不需要的UDF:

=INDIRECT("pries!"&Sheet2!I19&INDIRECT("RC4",0))


文章来源: Excel Evaluate formula error