在VBA中使用负循环编号

时间:2015-08-10 20:25:31

标签: excel vba for-loop counter

我在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

如何在避免错误的同时实现这一目标?

2 个答案:

答案 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