2015-08-03 84 views
0

林试图创建一个VBA脚本以VLOOKUP到另一个工作簿。第二本工作手册的名称始终是Stock.xls。 Stock.xls中的数据始终位于第一张工作表中,但此表的名称每天都有所不同。它可以是ARTLIST1,ARTLIST2,ARTLIST(3),ARTLIST-4等,但始终以ARTLIST开始。 我怎么能告诉VBA脚本只是使用第一个表,或者表总是包含单词ARTLIST(例如ARTLIST *)Excel的VBA脚本VLOOKUP其他文件,未知的工作表名称

ActiveCell.FormulaR1C1 = _ 
    "=VLOOKUP(C[-36],'[Stock.xls]ARTLIST1'!R1:R65536,13,0)" 
Selection.Copy 

帮助表示高度赞赏。提前致谢!

Richard

+0

你看的东西吗?在这个网站上有很多例子。 [Here is one](http://stackoverflow.com/a/25953980/4243498) – ChipsLetten

+0

你试过搜索吗? INDIRECT()函数几乎可以做到这一点...您可以使用INDIRECT(A1),其中A1包含您正在查找的工作表名称。 – SpaceSteak

+0

使用INDIRECT我需要将工作表的名称放在A1中,对吗?我需要全自动的东西..我不需要填写任何东西来选择第一张纸。理想情况下,我的代码不是在上面的代码中使用ARTLIST1,而是使用Worksheet(1)或ARTLIST *。 – Richard

回答

1

您可以通过索引引用它并获取名称。然后你在公式的建筑物中的名称变量。

Dim wsName as string 
Dim ws As Excel.Worksheet 

Set ws = Application.Worksheets(1) 
wsName = ws.Name 

ActiveCell.FormulaR1C1 = "=VLOOKUP(C[-36],'[Stock.xls]" & wsName & "'!R1:R65536,13,0)" 
Selection.Copy 
0

使用工作表以1指数得到第一张:

For each ws in worksheetsFor Each ws In ActiveWorkbook.Worksheets 
    If ws.Index = 1 Then 
     'Do code, this is the first worksheet 
    End If 
Next ws 
相关问题