2016-06-21 39 views
0

我有一个使用VBA进行VlookUP的Excel工作表。问题是我提取信息,金额总是不同的。我想找到一种方法来添加代码,以添加信息,直到没有更多信息添加为止。如何更改范围只有当有信息时才运行

这里是工作,但只对我放在细胞代码:

Sub vLook() 
With ThisWorkbook.Worksheets("EODComponents").Range("f5:F200") 
    .Formula = "=VLOOKUP(C5,($H$5:$i$34),2,FALSE)" 
    .Value = .Value 
End With 

End Sub 
+0

我需要改变F200,直到没有更多的信息comapare –

+0

你试过'UsedRange'吗? – cyboashu

回答

0

您可以设置一个lastRow

Sub vLook() 
Dim lastRow as Long 

With ThisWorkbook.Worksheets("EODComponents") 
    lastRow = .Cells(.Rows.Count,6).End(xlUp).Row 

    With .Range("f5:F" & lastRow) 
     .Formula = "=VLOOKUP(C5,($H$5:$i$34),2,FALSE)" 
     .Value = .Value 
    End With 
End With 

End Sub 
+0

布鲁斯,它只给了我F5的价值,但不是其余。你认为这可能是拉斯特罗的东西? @bruceWayne –

+0

@NickNorwood - 如果你通过它(按'F8'),'lastRow'被设置为什么?我假设你的列F有最多的数据,所以我从那里得到最后一行数。哦!此外,由于您想使用公式(相对而言,我假设),将'Vlookup'行更改为'.FormulaR1C1 =“= VLOOKUP(RC [-3],R5C8:R34C9,2,FALSE)”'。 – BruceWayne

0

也许你可以尝试使用Do while -loop?

如果你把while语句放在正确的位置,这个过程会一直持续到你的语句变成false;没有更多的信息要添加。

您可以使用Len()函数检查单元格内的文本/值的长度,当此值为零时,您可以假定单元格为空。

关于这个条目的更多信息可以找到here

例子:

Public Sub Something() 
Dim i As Integer 
    i = 1 

Do While (Len(Cells(i, 1).Text) > 0) 
    i = i + 1 
Loop 

MsgBox "The next row of column 'A' is empty: A" & i 

End Sub 

希望这有助于。

相关问题