【发布时间】:2017-04-21 14:48:49
【问题描述】:
我正在尝试使用来自同一工作簿中另一个名为“Go Live Data”的工作表的 vlookup 填充工作表中的多个列,直到范围的末尾。
因此,根据工作表中从 A6 开始的值,我想在工作表“Go Live Data”中查找从 U6 开始到选项卡中填写的数据末尾的单元格的范围 A:K(此会动态变化)。我想对以 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
我是不是走错了路?感谢您的帮助。
【问题讨论】:
-
这段代码是怎么编译的?你有 3 个
With,只有一个End With -
内嵌空格的工作表名称需要用引号引起来(
') -
在您的
.Formula行中也不允许有换行符(如果它们不是通过格式化本网站的代码插入的)。 -
AutoFill也不起作用-但我不确定您要填充什么。也许.AutoFill Destination:=.Resize(Rng.Rows.Count, 1) -
我不会每次都查找,我会索引并匹配行并相应地偏移。您正在查找 :) 相同的标识符,因此该行有一个匹配的帮助列,然后使用偏移量。您的代码仅在 1 行上运行,没有任何动态,您可能需要为任何动态循环此代码。但是只添加它们并填写代码有什么区别?