gpt4 book ai didi

Excel 计算公式错误

转载 作者:行者123 更新时间:2023-12-04 20:47:13 25 4
gpt4 key购买 nike

我的 VBA 代码是

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

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

if Sheet2!e19 has string INDIRECT("pries!"&Sheet2!I19&12) or INDIRECT("pries!"&Sheet2!I19&Sheet1!d4) or INDIRECT("pries!"&Sheet2!I19&"Sheet1!D"&row()+12) the formula return result from sheet pries!$Q12

if Sheet2!e19 has string INDIRECT("pries!"&Sheet2!I19&address(row(),4)) or INDIRECT("pries!"&Sheet2!I19&"Sheet1!D"&row()) the formula return result 0 it seems like ignoring the row() function



如何使这个公式工作以根据行号更改 d4 部分,如果行是 5 则 d5
INDIRECT("pries!"&Sheet2!I19&Sheet1!d4)

最佳答案

有趣的问题...要进一步了解该问题,请从即时或观察窗口尝试这些:

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

奇怪的是,他们都评估为 A1无论哪个单元格处于事件状态。这是 Evaluate 的一个怪癖或 []当返回值是范围引用时,引用相对于 A1 而不是事件(调用)单元格进行处理。你可以想到 row()相当于 row(RC)在 RC 符号中相对于 A1 进行评估。

但是,请注意更改 ]&""]在上面的三个公式中,第一个导致错误,但最后两个是预期结果,因此 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))

关于Excel 计算公式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10945767/

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