在 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")))`
我在同一个工作簿中有两个 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")))`