在一个子

时间:2017-04-21 06:36:02

标签: excel vba excel-vba

我正在尝试使用同一工作簿中名为“Go Live Data”的另一个工作表中的vlookup来填充工作表中的多个列,直到范围的末尾。

因此,基于我在工作表中从A6开始的值,我想在工作表“Go Live Data”中查找范围A:K,用于从U6开始的单元格到填充在选项卡中的数据的末尾(这会动态变化)。我想对从V6和W6开始的单元重复此操作。

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

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

我走错了路吗?谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

尝试以下代码,它将帮助您正确分配VLookup范围。

使用LKUpRng.Address(True, True, xlA1, xlExternal)时,第4个参数xlExternal还会添加工作表的名称(如果需要,还会添加工作簿)以及所需的所有'!。< / p>

<强>代码

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