在 VBA 中结合 INDIRECT 和 ADDRESS 函数

Combine INDIRECT with ADRESS function in VBA

我在同一个工作簿中有两个 Excel Sheet: Sheet 1(名字是 AK):

      A      B     C
   --------------------
1  |  A2  |     |     |
   --------------------
2  |  20  |     |     |
   --------------------

Sheet 2 包含以下公式: =INDIRECT("AK!" & ADDRESS(2;1;1;"TRUE";"AK"))

现在我想通过 VBA 动态地将这个公式添加到 sheet 中并写下这一行:

ActiveWorkbook.Worksheets("Sheet2").Range("q2").Formula = "=IF(A2<>"""",VLOOKUP(T2,INDIRECT(""AK!"" & ADDRESS(2,1,1,TRUE,""AK"")):INDIRECT(""AK!"" & ADDRESS(2,2,1,TRUE,""AK"")),2,0),"""")"

但是我得到 #BEZUG 错误(我在德语中使用 Excel)。怎么了?

当我在单元格中键入公式的各个部分时,我得到以下结果:

=ADDRESS(2;1;1;TRUE;"AK") 结果如预期的那样 AK!$A

但是 =INDIRECT("AK!" & ADDRESS(2;1;1;"TRUE";"AK")) 结果是 #BEZUG

感谢您的帮助!

"AK!" & ADDRESS(2;1;1;"TRUE";"AK") 会给出 AK!AK!$A,因为 Address 函数已经包含 sheet 指定。

改用=INDIRECT(ADDRESS(2;1;1;"TRUE";"AK")

"TRUE"是否正确?不应该是0(R1C1风格)还是1(A1风格)吗?

嵌套Indirect这样解决:

`=INDIRECT("AK!" & INDIRECT("AK!" & ADDRESS(2;1;1;"TRUE";"AK")))`