我不是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。我不知道问题是否清楚,但我不知道这些操作是怎么做的。
答案 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