我正在尝试编写一个使用VLOOKUP从表中提取数据的宏,但是对于每个列完成,我希望能够增加列索引号以获得下一批数据。到目前为止宏看起来像这样:
Sub ExtractAddress()
Dim RowNum As Integer
RowNum = 2
Dim FinalRow As Integer
FinalRow = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
Dim ColNum As Integer
ColNum = 10
For RowNum = 2 To FinalRow
For ColNum = 10 To 27
Sheets("Sheet1").Cells(RowNum, ColNum).FormulaR1C1 = "=VLOOKUP(RC1,'[Address list.xlsx]Sheet1'!R1C1:R407C19,2,FALSE)"
Next ColNum
Next RowNum
End Sub
因此,对于通过ColNum的每个循环,我也希望增加列索引号,否则我最终会在每列中使用相同的数据。我尝试过使用变量J并在循环的每个循环后增加它但是它似乎不接受这个。
我是VBA的学习者,所以用简单的语言答案会非常有帮助。
谢谢大家!
答案 0 :(得分:0)
试试这个。我刚刚将ColNum
添加到公式中:
Sheets("Sheet1").Cells(RowNum, ColNum).FormulaR1C1 = "=VLOOKUP(RC1,'[Address list.xlsx]Sheet1'!R1C1:R407C19," & ColNum - 8 &",FALSE)"
您不必逐个循环遍历所有单元格以应用公式,您可以用更少的步骤,更少的范围和“通用公式”来执行此操作,这意味着正确使用相对和绝对引用。
像这样(这是按列,我想不出一种方法可以立即将公式应用于整个范围)
Sub ExtractAddress()
Dim RowNum As Integer
Dim FinalRow As Integer
Dim ColNum As Integer
With Sheets("Sheet1")
FinalRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For ColNum = 20 To 27
.Range(.Cells(2, ColNum), .Cells(FinalRow, ColNum)).FormulaR1C1 = _
"=VLOOKUP(R[0]C1,R1C1:R" & FinalRow & "C19," & ColNum - 18 & " ,FALSE)"
Next ColNum
End With
End Sub