基于数组VBA中存储的开始和结束日期进行循环

时间:2018-11-05 09:55:02

标签: arrays excel vba

资料表:
设计:A
数据1
数据2
数据3
数据4
设计A总计

设计:B
数据5
数据6
数据7
设计B总计

新工作表中的信息排列带有新的标题:
数据1设计A
data 2设计A
data 3设计A
data 4设计A
数据5设计B
数据6设计B
数据7设计B
设计总计A
设计B总计

1)如何循环收集一个阵列中的设计说明,而另一阵列中的设计总数?我需要为这两个数组分配数组0和1吗?

2),然后根据新的工作表格式进行数组计数以粘贴它们吗?

有可能吗?

2 个答案:

答案 0 :(得分:0)

您的意思是这样的吗?

Sub Test()

    Dim StRows As Variant
    Dim EndRows As Variant

    Dim aStRow As Variant
    Dim aEndRow As Variant

    StRows = Array(1, 2, 3, 4, 5)
    EndRows = Array(6, 7, 8, 9, 10)

    For Each aStRow In StRows
        For Each aEndRow In EndRows
            Debug.Print aStRow & " - " & aEndRow
        Next aEndRow
    Next aStRow

End Sub

这将在Immediate窗口中打印到单独的行:
1 - 6, 1 - 7, 1 - 8, 1 - 9, 1 - 10然后是2 - 6, 2 - 7, 2 - 8....

每个StRow都附加到每个aEndRow

答案 1 :(得分:0)

如果开始和结束具有相同数量的元素,则可以为它们使用相同的循环/相同控制变量。

Sub LoopRanges()

    Dim aStart As Variant
    Dim aEnd As Variant
    Dim i As Long
    Dim rCell As Range

    'Start and End have some number of elements
    aStart = Array("A1", "B3", "C10", "D1")
    aEnd = Array("A10", "B15", "C12", "D20")

    With Sheet1
        'loop through start, but use the same control variable (i) for both start and end
        For i = LBound(aStart) To UBound(aStart)
            For Each rCell In .Range(.Range(aStart(i)), .Range(aEnd(i))).Cells
                Debug.Print rCell.Address
            Next rCell
        Next i
    End With

End Sub

这可能不是您的确切情况,但希望它足够接近以提供指导。我有两个数组-一个用于开始的单元格,另一个用于结束的单元格。在我的For Next循环中,使用i作为控制变量,并同时访问aStart和{{1 }}使用该变量。内部循环只是为For Each迭代建立范围。