VBA Netting For Loop

时间:2018-06-08 14:51:06

标签: excel-vba vba excel

我正在尝试将两个for-next循环网络化。

For j = 2 To rownum 'rownum=502
        For k = 3 To 7 Step 1 'ref_row step 1
        Workbooks(tdrname).Worksheets("CatSh").range("D" & CStr(j + 1)) _
            = j 'Workbooks(tdrname).Worksheets("Transaction in Specified Period").range("P" & j).Value
        Workbooks(tdrname).Worksheets("CatSh").range("E" & CStr(j + 1)) _
            = k 'Workbooks(tdrname).Worksheets("CatSh").range("B" & k).Value
    Next k
Next j

我在" CatSh" Sheet,是一个循环数字J跟随相同的数字,这是k的最后一个数字。

任何人都知道发生了什么事?

1 个答案:

答案 0 :(得分:0)

在决定要写入的行时,您需要考虑j AND k

这可能会低于您想要的偏移,因此您需要调整它,但如果您希望按顺序编写的每个项目没有间隙,则以下内容应该有效:

For j = 2 To rownum 'rownum = 502
        For k = 3 To 7 Step 1 'ref_row step 1
        Workbooks(tdrname).Worksheets("CatSh").Range("D" & CStr((j * (7 - 3 + 1)) + k)) _
            = j 'Workbooks(tdrname).Worksheets("Transaction in Specified Period").range("P" & j).Value
        Workbooks(tdrname).Worksheets("CatSh").Range("E" & CStr((j * (7 - 3 + 1)) + k)) _
            = k 'Workbooks(tdrname).Worksheets("CatSh").range("B" & k).Value
    Next k
Next j

注意,如果您更改循环定义的7 - 3部分,CStr((j * (7 - 3 + 1)) + k))中的For k = 3 To 7 Step 1也需要进行调整。