在VBA中将INDIRECT与ADRESS功能结合

时间:2018-12-07 09:07:16

标签: excel vba excel-vba excel-formula excel-indirect

我必须在同一工作簿中使用Excel Sheets: 表格1(名称为AK):

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

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

现在,我想通过VBA将这个公式动态添加到工作表中,并写以下行:

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$1,如预期。

但是,=INDIRECT("AK!" & ADDRESS(2;1;1;"TRUE";"AK"))会产生#BEZUG

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

"AK!" & ADDRESS(2;1;1;"TRUE";"AK")将给出AK!AK!$A$2,因为Address函数已经包含工作表名称。

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

"TRUE"是否正确?应该不是0(R1C1样式)还是1(A1样式)?

答案 1 :(得分:0)

嵌套Indirect可以这样解决:

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