列中的Vba multy循环

时间:2014-01-21 10:34:04

标签: excel vba excel-vba for-loop

我不是vba开发人员,但是他们让我在VBA中创建一个宏,但我不知道该怎么做。我有一个excel表,其中有几列。

Date    Activity   ActivityType  Hours

按顺序:A,B,C,D列。 好。 B列有几个选项列表:

Activity1
Activity2
Activity3

同样的事情是C列

Type1
Type2
Type3

好的,现在,我必须为每个Activity在B列中创建一个循环。从Activity1开始,我必须为每个活动循环C列。所以,

first loop will be Activity1 - Type1, Activity1 - Type2, Activity3 - Type3.

Second loop: Activity2 - Type1 etc etc.

在第一个循环中,例如我需要在另一个工作表中复制Activity1 - Type1的行,而对于另一个我必须做同样的事情。对于每个活动和ActivityType。我不知道问题是否清楚,但我不知道这些操作是怎么做的。

1 个答案:

答案 0 :(得分:0)

您似乎正在尝试创建笛卡尔积,这将是B列中所有单元格中的所有单元格“乘以”。这是一个简单的VBA子,它在工作簿的“Sheet2”上输出结果。快速免责声明,这是在没有我的VBA编辑器的情况下完成的,因此可能会出现轻微的语法错误。

Sub MyFunction()

    Dim ws3 As Worksheet
    Dim rng1 As Range
    Dim rng2 As Range
    Dim lRow1 As Long
    Dim lRow2 As Long
    Dim i As Long
    Dim j As Long
    Dim k As Long
    Dim output as String

    Set rng1 = Worksheets("Sheet1").Range("B1").CurrentRegion
    Set rng2 = Worksheets("Sheet1").Range("C1").CurrentRegion
    Set ws3 = Worksheets("Sheet2")
    lRow1 = rng1.Rows.Count
    lRow2 = rng2.Rows.Count
    k = 0

    For i = 1 To lRow1
        For j = 1 To lRow2
            k = k + 1
            output = rng1.Cells(i,1).Value & " - " & rng2.Cells(j,1).Value
            ws3.Range("A" & k).Value = output
        Next j
    Next i

End Sub