Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在一个子系统中使用VBA的多个VLOOKUP_Vba_Excel - Fatal编程技术网

在一个子系统中使用VBA的多个VLOOKUP

在一个子系统中使用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

我试图用同一工作簿中另一个名为“Go Live Data”的工作表中的vlookups填充工作表中的多列,直到范围结束

因此,基于我的工作表中从A6开始的值,我想查找从U6开始的单元格到选项卡中填充的数据末尾的工作表“Go-Live Data”中的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

我走错方向了吗?谢谢您的帮助。

尝试下面的代码,它将帮助您正确分配
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有任何反馈吗?你能让代码正常工作吗?