在一个子系统中使用VBA的多个VLOOKUP
我试图用同一工作簿中另一个名为“Go Live Data”的工作表中的vlookups填充工作表中的多列,直到范围结束 因此,基于我的工作表中从A6开始的值,我想查找从U6开始的单元格到选项卡中填充的数据末尾的工作表“Go-Live Data”中的A:K范围(这将动态更改)。我想对从V6和W6开始的单元格重复这个步骤 这是我现在拥有的代码,但它没有填充在一个子系统中使用VBA的多个VLOOKUP,vba,excel,Vba,Excel,我试图用同一工作簿中另一个名为“Go Live Data”的工作表中的vlookups填充工作表中的多列,直到范围结束 因此,基于我的工作表中从A6开始的值,我想查找从U6开始的单元格到选项卡中填充的数据末尾的工作表“Go-Live Data”中的A:K范围(这将动态更改)。我想对从V6和W6开始的单元格重复这个步骤 这是我现在拥有的代码,但它没有填充 Sub VlookupGoLiveandBOP() Dim Rng As Range, Dn As Range Set Rng = Rang
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
我走错方向了吗?谢谢您的帮助。尝试下面的代码,它将帮助您正确分配
VLookup
范围
当使用lkuprung.Address(True,True,xlA1,xlExternal)
时,第四个参数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
选项显式
子VlookupgliveandBOP()
尺寸Rng作为范围,Dn作为范围
变暗LKUpRng作为范围
变暗LkUpStr为字符串
设置LKUpRng=工作表(“上线数据”)。范围(“A:K”)
LkUpStr=LKUpRng.Address(True,True,xlA1,xlExternal)'这段代码是如何编译的?您有3个带有,只有一个以结尾并带有嵌入空格的工作表名称需要用引号(”
)括起来。您的公式行中也不允许有换行符(如果它们不是通过格式化此站点上的代码插入的).自动填充
也不起作用-但我不确定您要填充什么。也许.AutoFill Destination:=.Resize(Rng.Rows.Count,1)
我不会每次都进行vlookup,我会相应地对行和偏移量进行索引和匹配。您正在vlookup:)使用相同的标识符,因此为该行设置一个匹配的helper列,然后使用offset。您的代码只在一行上起作用,任何方式都不动态,您可能需要对任何动态内容进行循环。但是仅仅添加它们和填充代码有什么区别呢?这确实有效,但它似乎并没有一直填充到范围的末尾?它只是填充了U6I我没有说我重新编写了整个代码,只是帮助你解决了提出的问题,对吗?@cwight有任何反馈吗?你能让代码正常工作吗?