使用 Excel VBA 从包括空列在内的多个列表生成组合
Posted
技术标签:
【中文标题】使用 Excel VBA 从包括空列在内的多个列表生成组合【英文标题】:Generate Combinations from Multiple Lists Including Null Columns using Excel VBA 【发布时间】:2012-12-19 05:58:38 【问题描述】:我有两张表格,Sheet1 有一堆信息,有 4 个空列,Sheet2 有 4 个列表,每个列表下都有一堆内容。 示例:
列表1:A、B、C 清单 2:D、E、F、G 清单 3:H、I、J、K、L、M 清单 4:N
我想用列表的所有组合填充 Sheet1 中的空列,并为生成的每个组合复制原始的 Sheet1 内容。 示例:(只是一个大概的想法,没有特定的顺序)
内容XYZ|(空)|(空)|(空)|(空) 内容XYZ|A|(空)|(空)|(空) 内容XYZ|B|(空)|(空)|(空) ... 内容XYZ|(空)|D|(空)|(空) ... 内容XYZ|(空)|(空)|(空)|N ... 内容XYZ|B|F|(空)|(空) ... 内容XYZ|(空)|G|(空)|N ... 内容XYZ|(空)|E|K|N ... 内容XYZ|C|G|M|N
我已经完成了复制部分,并且卡在了组合部分。这是我到目前为止所拥有的,如果有人可以帮助我完成剩下的工作,请提前感谢!
Sub DupSubGroup()
b = 1
d = 1
f = 1
h = 1
Do
Sheets(1).Activate
Sheets(1).Range("A1:F1").Copy
erow = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
ActiveSheet.Paste Destination:=Sheets(1).Rows(erow)
...
Loop While b <= Sheet2.Columns("B:B").SpecialCells(xlVisible).Rows.Count And d <= Sheet2.Columns("D:D").SpecialCells(xlVisible).Rows.Count And f <= Sheet2.Columns("F:F").SpecialCells(xlVisible).Rows.Count And h <= Sheet2.Columns("H:H").SpecialCells(xlVisible).Rows.Count
【问题讨论】:
【参考方案1】:如果您正在寻找一个创建所有排列的循环,这里就是一个例子:
Sub Test()
Dim List1 As Variant, List2 As Variant, List3 As Variant
List1 = Array("A", "B", "C", "D")
List2 = Array(1, 2, 3)
List3 = Array(True, False)
Dim I1 As Integer, I2 As Integer, I3 As Integer, R As Integer
R = 1
For I1 = 0 To UBound(List1)
For I2 = 0 To UBound(List2)
For I3 = 0 To UBound(List3)
Cells(R, 1) = List1(I1)
Cells(R, 2) = List2(I2)
Cells(R, 3) = List3(I3)
R = R + 1
Next I3
Next I2
Next I1
End Sub
【讨论】:
以上是关于使用 Excel VBA 从包括空列在内的多个列表生成组合的主要内容,如果未能解决你的问题,请参考以下文章
Excel VBA 在 Excel 2016 中按多个条件进行多行排序
[No0000C1]Excel 删除空白行和空白列VBA代码