我在Excel VBA中使用i
作为计数器进行for循环。我有一个声明固执地给了我错误:
ActiveCell.FormulaR1C1 = "=VLookup(RC[-3],R3C7:R22C15,3)" & " & " & "R[-i]C" & " _
& " & "Vlookup(RC[-3],R3C7:R22C15,4)"
使用-i
显然会导致错误。我尝试添加
negi=-i
然后将R[-i]C
更改为R[negi]C
,但这并没有解决问题。我在前面的代码中添加了一个Dim negi作为Integer语句。
编辑:这里有更多的代码。我正在使用两个循环。 rownumber是外循环的计数器,我是内循环的计数器。 i的范围是1到20,rownumber范围直到达到一行,第3列中有空白。
Range("A25").Select
Dim Rownumber As Integer
Dim i As Integer
Dim negi As Integer
Rownumber = 1
'这会启动外循环 做ActiveCell.Offset(0,3)<> “” '增加了20行 ActiveCell.Offset(1,0)。选择
Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(19, 5)).Select
Selection.Insert Shift:=xlDown
ActiveCell.Offset(-1, 0).Select
对于i = 1到20
ActiveCell.Offset(1, 0).Select
ActiveCell.FormulaR1C1 = i
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Rownumber
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=Vlookup(RC[-2],R3C7:R22C15,2)"
ActiveCell.Offset(0, 1).Select
negi = -i
ActiveCell.FormulaR1C1 = "=VLookup(RC[-3],R3C7:R22C15,3)" & " & " & _
"R[negi]C" & " & "& "Vlookup(RC[-3],R3C7:R22C15,4)"
....
rownumber = rownumber + 1
next i
如何在避免错误的同时实现这一目标?
答案 0 :(得分:1)
公式构建中存在一些错误的字符串连接。
i
必须在引用的字符串之外并且连接在一起,而& " & " &
可能不是你想做的事情。
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-3],R3C7:R22C15,3)&" & _
""" & ""&R[-" & i & "]C&"" & ""&" & _
"VLOOKUP(RC[-3],R3C7:R22C15,4)"
请记住,您必须在带引号的字符串中加倍引号。
答案 1 :(得分:0)
您可以执行从较大值到较低值的循环。这将从最后一个单元格循环到第一个单元格。
lRow = ws.UsedRange.Rows.count
Do While lRow > 0
lCol = ws.UsedRange.Columns.count
Do While lCol > 0
If InStr(ws.Cells(lRow, lCol), job) Then
End If
lCol = lCol - 1
Loop
lRow = lRow - 1
ws.Range("A" & lRow).Activate
Loop