我是vba的新手,并且非常重视绕过当前路障的方向。我想为选定范围运行Vlookup
。 Vlookup
将引用每天更新的数据。
Vlookup
在所选Range ("B2:B4")
的每个单元格中返回一个值。 Range("C2:C4")
。 我想确保每次运行宏时,范围会向右移动一列,以便比较一天到下一天的数据变化。
我提供了以下代码,允许我在Vlookup
中运行Range("B2:B4")
,但我还没有弄清楚如何根据下一个空列更改范围。
那就是说,非常感谢你的帮助,非常感谢。
Sub FillinBlanks()
Dim rng As Range
Set rng = Worksheets("Sheet2").Range("b2:b4")
For Each cell In rng
If IsEmpty(cell) Then
cell.FormulaR1C1 = "=vlookup(Sheet2!rc1,Sheet1!r5c6:r1000c8,3,false)"
End If
Next cell
End Sub
答案 0 :(得分:2)
您可以做的是找到第2行的最后一列,然后简单地添加1
。我假设第1行有标题,因此我试图找到第2行的最后一列。
见这个例子。
Sub FillinBlanks()
Dim rng As Range, cell As Range
Dim lCol As Long
With Worksheets("Sheet2")
'~~> Find the last column in row 2
lCol = .Cells(2, .Columns.Count).End(xlToLeft).Column + 1
'~~> Construct your range
Set rng = .Range(ReturnName(lCol) & "2:" & ReturnName(lCol) & "4")
End With
For Each cell In rng
If IsEmpty(cell) Then
cell.FormulaR1C1 = "=vlookup(Sheet2!rc1,Sheet1!r5c6:r1000c8,3,false)"
End If
Next cell
End Sub
'~~> Function to return column name from column number
Function ReturnName(ByVal num As Integer) As String
ReturnName = Split(Cells(, num).Address, "$")(1)
End Function