在宏函数中使用Vlookup

时间:2013-07-26 14:13:34

标签: excel vba excel-vba vlookup

我需要为每个单元格使用Vlookup macro = VLOOKUP(E2,[gpic.xlsx] Sheet1!$ A:$ D,4,FALSE),直到它结束。我不知道如何使用长而不是范围。当我使用范围时,它有时会结束,因为我预测错了,我希望一切都是自动化的,有人可以帮忙吗?而不是E2,我需要它来完成所有这些,但我想将它合并到我的宏中。

Sub Work()
Dim LR As Long
Dim row As String
row = "E2"
row = "E" & x
LR = Range("E" & Rows.Count).End(xlUp).row
Range(Columns(6), Columns(7)).Select
For x = 0 To 2
row = "E" & x
Range("F2:F" & LR).Formula = "=VLOOKUP(" & row & ",[gpic.xlsx]Sheet1!$A:$D,4,FALSE)"
Next




End Sub

2 个答案:

答案 0 :(得分:2)

为了扩展JDuarteDJ所说的内容,使用变量循环遍历行可能效果最好。但是,有时您提到您错误地预测了行数。你可以使用:

  

rowCount = ActiveSheet.Range(“F”& Rows.Count).End(xlUp).Row

这将在F列中为您提供其中包含somthing的行数。然后您可以执行JDuarteDJ仅提及的相同循环而不是

  

x = 2到20

您可以使用

  

对于x = 2到rowCount   
'做上面提到的所有事情以及你需要做什么   
下一步

希望这有帮助

------------- UPDATE ---------------------------
编辑的问题,我认为,在你的for循环中,你正在使用:

  

范围(“F2:F”& LR).FormulaR1C1 =“= VLOOKUP(& row&,[gpic.xlsx] Sheet1!$ A:$ D,4,FALSE)”   

哪个是没有迭代正确的次数。在我看来,你想要做的是从2循环到行数,如下所示:

  

对于x = 2到LR   
  范围(“F2:F”& X).FormulaR1C1 =“= VLOOKUP(& row&,[gpic.xlsx] Sheet1!$ A:$ D,4,FALSE)”   

答案 1 :(得分:0)

替换E2变量:

  

将行调暗为字符串
  row =“E2”

然后使用循环迭代所有E2,E3,E4等。

  

对于x = 2到20,执行   row =“E”& X
  formula =“VLOOKUP(”& row&“,[gpic.xlsx] Sheet1!$ A:$ D,4,FALSE)”
  ...在这里使用你的代码...

我的VB可能有点生锈:/
希望这有帮助