VLOOKUP根据位置而不是NAME

时间:2010-08-06 09:05:28

标签: excel vba excel-vba

我在一些单元格中输入了我想要执行的文件的名称,并为excel写了一个maco来根据位置调用文件。 (假设我在单元格中写入1.xls单元格(2,“B”)) e.g。

A = Cells(1, "B") 
B = Cells(2, "B") 
C = Cells(3, "B") 
Workbooks.Open Filename:=A 
Windows(A).Activate 

现在,我想通过查找“B”(即单元格(2,“B”),即1.xls)进行VLOOKUP

从宏记录中,它变为:

ActiveCell.FormulaR1C1 = _ 
  "=VLOOKUP(RC[-2],'[1.xls!R4C1:R6733C2,2,FALSE)" 

但是,由于我将来要更改我想要查找的文件的名称,我不希望相位“1.xls”出现在公式中...但只有位置(即B)擅长抬头。


我想要的是,当我将B = Cells(2, "B")设置为我的代码并将1.xls放在该单元格中时,VBA中的VLOOKUP是否会成为

ActiveCell.FormulaR1C1 = _ 
  "=VLOOKUP(RC[-2],'[B!R4C1:R6733C2,2,FALSE)" 

ActiveCell.FormulaR1C1 = _ 
  "=VLOOKUP(RC[-2],'[1.xls!R4C1:R6733C2,2,FALSE)" 

因此,在放置文件名时,没有“绝对”文件名,只有单元格地址?

我需要VBA代码,因为我有几个工作表供我查找,它们都具有完全相同的格式(所以VLOOKUP的所有条件都是相同的,除了名称)。因此我需要excel根据我在同一单元格中输入的新名称(B)执行查找,但不要求我再次选择critera ..我该怎么办?

或者我需要间接功能吗? 我试过=VLOOKUP(G2,INDIRECT("B2!R4C1:R6733C2"),2,FALSE)其中R4C1:R6733C2是我要在B2中粘贴的文件中查找的范围。但是,上述代码甚至无法使用该函数手动工作。

1 个答案:

答案 0 :(得分:0)

您是否有任何理由无法根据分配给变量的行设置起始范围然后进行偏移?