2017-04-21 64 views
0

我试图在同一工作簿中使用另一个名为“Go Live Data”的工作表中的vlookups填充表中的多个列到该范围的末尾。因此,根据我工作表中从A6开始的值,我想查找范围A:K在表单“开始实时数据”中,从U6开始的单元格到填充在标签中的数据的末尾(这会动态改变)。我想对从V6和W6开始的单元格重复此操作。在一个分支中使用VBA的多个Vlookups

这是我现在的代码,但它没有填充。

Sub VlookupGoLiveandBOP() 


Dim Rng As Range, Dn As Range 
Set Rng = Range(Range("A6"), Range("A" & Rows.Count).End(xlUp)) 
With Range("U6") 
    .Formula = "=IF(ISNA(VLOOKUP(A6,Go Live 
Data!$A:$K,2,FALSE)),"""",VLOOKUP(A6,Go Live Data!$A:$K,2,FALSE))" 
    .AutoFill Destination:=Rng.Offset(, 66) 

With Range("v6") 
    .Formula = "=IF(ISNA(VLOOKUP(A6,Go Live 
Data!$A:$K,3,FALSE)),"""",VLOOKUP(A6,Go Live Data!$A:$K,3,FALSE))" 
    .AutoFill Destination:=Rng.Offset(, 66) 


With Range("w6") 
    .Formula = "=IF(ISNA(VLOOKUP(A6,Go Live 
Data!$A:$K,4,FALSE)),"""",VLOOKUP(A6,Go Live Data!$A:$K,4,FALSE))" 
    .AutoFill Destination:=Rng.Offset(, 66) 

End With 
Rng.Offset(, 66).Value = Rng.Offset(, 66).Value 

End Sub 

我在错误的轨道上吗?感谢您的帮助。

+5

这是如何的代码编译,甚至?你有3'With'和只有一个'End With' –

+1

带有嵌入空格的表名需要用引号括起来(''') – YowE3K

+1

你的'.Formula'行中也不允许换行符(如果它们不是通过格式化该网站上的代码插入)。 –

回答

1

请尝试下面的代码,它将帮助您正确指定VLookup范围。

当使用LKUpRng.Address(True, True, xlA1, xlExternal)第4个参数xlExternal还增加了(如果需要和工作簿)工作表的名称与所有需要的'!

代码

Option Explicit 

Sub VlookupGoLiveandBOP() 

Dim Rng As Range, Dn As Range 
Dim LKUpRng As Range 
Dim LkUpStr As String 

Set LKUpRng = Sheets("Go Live Data").Range("A:K")  
LkUpStr = LKUpRng.Address(True, True, xlA1, xlExternal) '<-- get the Range as a String, including the sheet's name 

Set Rng = Range(Range("A6"), Range("A" & Rows.Count).End(xlUp)) 

Range("U6").Formula = "=IF(ISNA(VLOOKUP(A6," & LkUpStr & ",2,FALSE)),"""",VLOOKUP(A6," & LkUpStr & ",2,FALSE))" 

End Sub 
+0

这绝对有效,但它似乎并没有一直填充到范围的最后?它只是填充U6 – cwight

+0

我没有说我重写了整个代码,只是帮助你解决了引发的问题,对吧? –

+0

@cwight有没有反馈?你是否能够使代码工作? –

相关问题