使用VBA Vlookup循环,具有动态单元格值

时间:2017-12-06 21:14:41

标签: excel vba excel-vba

Sub tabelvul()

Dim nr(2)

For i = 2 To 31
    nr(1) = Range("AA" & i).Value
    nr(2) = Range("AN" & i).Value
    If nr(2) = 0 Then
        ' do nothing
    Else
        Range(nr(1)).Select
        ActiveCell.FormulaR1C1 = _
            "=VLOOKUP(nr(2),Tabel80[[Kolom1]:[Inschrijver]],2)"
    End If
Next i

End Sub

第一个值nr(1)有B4,所以我确实在B4中得到了Vlookup的公式,但是他正在搜索nr(2)而不是nr(2)的对应值,这是1,所以我希望公式在表中查找1。

2 个答案:

答案 0 :(得分:3)

我非常确定您的代码中还有其他可以改进的内容,但您应该更改:

"=VLOOKUP(nr(2),Tabel80[[Kolom1]:[Inschrijver]],2)"

对此:

"=VLOOKUP(" & nr(2) & ",Tabel80[[Kolom1]:[Inschrijver]],2)"

看起来你想要在一个范围内进入Vlookup直到nr(2)= Range(" AN"& i).value = 0,所以我不知道为什么你会使用一个数组,如果我知道你正在尝试更多的细节,可能会让它变得更好,但据我所知,这可以做到:

Sub tabelvul()
For i = 2 To 31
    If Range("AN" & i).Value = 0 Then
        ' do nothing
    Else
        Range("AA" & i).FormulaR1C1 = _
            "=VLOOKUP(" & Range("AN" & i).Value & ",Tabel80[[Kolom1]:[Inschrijver]],2)"
    End If
Next i
End Sub

答案 1 :(得分:2)

也许您应该将"=VLOOKUP(nr(2),Tabel80[[Kolom1]:[Inschrijver]],2)"更改为"=VLOOKUP(" & nr(2) & ",Tabel80[[Kolom1]:[Inschrijver]],2)"