簡體   English   中英

Excel評估公式錯誤

[英]Excel Evaluate formula error

我的VBA代碼是

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

在單元格f4的Sheet1中,我具有公式=yEval(Sheet2!E19)在sheet1上的單元格d4包含數字12 Sheet2!I19包含字符串$ Q

如果Sheet2!e19具有字符串INDIRECT(“ pries!”&Sheet2!I19&12)或INDIRECT(“ pries!”&Sheet2!I19&Sheet1!d4)或INDIRECT(“ pries!”&Sheet2!I19&“ Sheet1!D”&row()+ 12)表格返回的公式返回結果!$ Q12

如果Sheet2!e19具有字符串INDIRECT(“ pries!”&Sheet2!I19&address(row(),4))或INDIRECT(“ pries!”&Sheet2!I19&“ Sheet1!D”&row()),則公式返回結果0看起來像忽略row()函數

如何使該公式根據行號更改d4部分,如果行為5,則d5

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

有趣的問題...要進一步了解該問題,請在即時窗口或監視窗口中嘗試以下操作:

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

奇怪的是,無論哪個單元處於活動狀態,它們都將評估為A1 如果返回值是范圍引用,則相對於A1而不是活動(調用)單元格對待引用是對Evaluate[]的怪癖。 您可以認為row()等效於相對於A1評估的RC表示法中的row(RC)

然而,注意,變更]&""]中的三個公式上述結果中的誤差在第一但預期的結果中的最后兩個,使得row()現在評估相對於所述活動單元格。 因此,當返回值不是范圍引用時,似乎Evaluate的功能有所不同。

更新

基於這些觀察,您可以將INDEX用作行引用,並將INDIRECT移至外部:

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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM