首页 文章

在宏函数中使用Vlookup

提问于
浏览
1

我需要为每个单元格使用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

    将E2替换为变量:

    Dim row as String row =“E2”

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

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

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

  • 2

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

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

    这将为您提供F列中带有某些内容的行的计数 . 然后,您可以执行与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)”

相关问题