通过 r1c1 公式引用预定义范围

Refering to a predefined range through r1c1 formulation

我必须在另一个工作表的另一个范围内查找一些值。我已将范围定义为 "x",我想在 r1c1 公式中使用它,请参见示例:

Set x = extwbk.Worksheets("ark1").Range("A1:d400")
With twb.Sheets(filename)
        .Range("k2:k" & n).FormulaR1C1 = "=VLOOKUP(RC[-10],x,4,False)"
        .Range("l2:l" & n).FormulaR1C1 = "=VLOOKUP(RC[-11],x,4,False)"

我已经尝试过 application.vlookup,它有效,但速度太慢,因为我必须循环遍历 4000 多行两次 我将需要使用范围 x,因为范围应该是灵活的,具体取决于查找 table,例如:

Set x = extwbk.Worksheets("ark1").Range("A1:d" & rows)

关于如何在查找函数中引用范围 x 的任何建议? 谢谢!

您正在将 x 范围设置为 Set x = extwbk.Worksheets("ark1").Range("A1:d400") ,并且您想在 R1C1 类型的公式中使用它,您可以从 x 中获取地址范围 x.Address(False, False, xlR1C1)

尝试使用以下两行:

.Range("K2:K" & n).FormulaR1C1 = "=VLOOKUP(RC[-10]," & x.Address(False, False, xlR1C1) & ",4,False)"
.Range("L2:L" & n).FormulaR1C1 = "=VLOOKUP(RC[-11]," & x.Address(False, False, xlR1C1) & ",4,False)"

在@Rory 评论和 PO 之后,如果您指的是外部工作簿,那么您需要添加第 4 个参数,并且还要查找绝对范围:

.Range("K2:K" & n).FormulaR1C1 = "=VLOOKUP(RC[-10]," & x.Address(True, True, xlR1C1, True) & ",4,False)"
.Range("L2:L" & n).FormulaR1C1 = "=VLOOKUP(RC[-11]," & x.Address(True, True, xlR1C1, True) & ",4,False)"