如何在excel vba中为Matrix单元格使用嵌套循环

当前Excel表结构

filteredStartRow = A2 detailsS​​tartRow = D2

※i = x(得到filteredItemCount的值,例如:2,3,2)
※j = y(获取detailsItemCount的值,例如:4,5,3)

我卡住,我可以如何有效地移动到第二个filteredStartRow(A4)和detailsS​​tartRow(D10)。 并继续,直到最后一个filter和细节StartRow。

我在做什么:获取ItemCount(例如:x,y)在filter和细节项目中运行嵌套循环。 由于我已经知道filter和细节的下一个项目数,所以我只需要改变我的下一个filterStartRow和detailsS​​tartRow。 如何使用(i,j)的任何dynamic设置来构造我的Loop以及设置STARTROW? 任何人都可以请帮助代码。

这是我的代码,它只适用于第一个循环(绿色镶边)。

startRow = 2 startRow1 = 2 nextDetailsRow = 0 For i = 1 To noOfFilteredItem (eg:3) mapFilteredItemCount = Worksheets("Sheet1").Cells(startRow, 3).Value detailsItemCount = Worksheets("Sheet1").Cells(startRow1, 6).Value With ThisWorkbook.Worksheets("Sheet1") For m = 1 To mapFilteredItemCount For n = 1 To detailsItemCount If .Cells((startRow + m) - 1, 2) = .Cells((startRow1 + n) - 1, 5) Then If IsEmpty(.Cells((startRow1 + n) - 1, 8).Value) = True Then .Cells((startRow1 + n) - 1, 8).Value = "Deliver" nextDetailsRow = nextDetailsRow + startRow + n Else GoTo NextIteration End If End If NextIteration: Next n Next m End With Next i 

我的问题是:
– 一旦循环(m,n)完成,我需要dynamic地更新STARTROW和STARTROW1。
– 如何分配STARTROW和STARTROW1variables以接收下一个起始行值。

我的逻辑:
– 我正在考虑将所有的STARTROW和STARTROW1数字保存到一个数组中,然后从数组中获得值。
例如:
filteredItemRowArray()= 2,4,7(※过滤项目的起始行号)
detailsItemRowArray()= 2,6,11(※详细项目开始行号)

但我无法安排这个数组来保持行号值。

任何人都可以请帮助我,我真的很感谢您的编程SMARTNESS。 如果您有任何疑问或理解问题,请告诉我。 非常感谢你。

我会尝试相同的想法。 用数字循环访问数组。 请尝试下面的代码:

 Sub Outer_Loop() Dim StartrowArr, Startrow1Arr, I As Integer Dim Startrow As Long, Startrow1 As Long StartrowArr = Array(2, 4, 7) Startrow1Arr = Array(2, 6, 11) For I = LBound(StartrowArr) To UBound(StartrowArr) Startrow = StartrowArr(I) Startrow1 = Startrow1Arr(I) Debug.Print "Loop " & I, "Startrow: " & Startrow, "Startrow1: " & Startrow1 ' your code Next I End Sub