【问题标题】:Multiple Vlookups using VBA in one sub在一个子程序中使用 VBA 进行多个 Vlookup
【发布时间】: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 行上运行,没有任何动态,您可能需要为任何动态循环此代码。但是只添加它们并填写代码有什么区别?

标签: vba excel


【解决方案1】:

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

使用LKUpRng.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

【讨论】:

  • 这绝对有效,但它似乎并没有一直填充到范围的末尾?它只是填充 U6
  • 我没有说我重写了整个代码,只是帮你解决了提出的问题,对吧?
  • @cwight 有什么反馈吗?你能让代码工作吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-20
  • 2023-03-29
  • 1970-01-01
  • 2019-10-06
  • 1970-01-01
相关资源
最近更新 更多