|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
试成功了!
Sub ss()
' https://club.excelhome.net/threa ... tml?_dsign=215b7261
' 2024-5-23
' 问题需求:有三堆盒子,分别是:第一堆1到6号,第二堆7到12号,第三堆13号到18号。
' 现在分别从第一堆、第二堆、第三堆中各取2个盒子,可能的组合数是15乘以15乘以15,
' 共有3375种可能,现在需要将这3375种可能全部用VBA代码罗列到excel工作表中。
' 高试假设:以aa/bb/cc 表示三堆盒子,盒子里的元素用字母表示
Cells.ClearContents
aa = "ABCDEF"
bb = "GHIJKL"
cc = "MNOPQR"
x = 1
For a = 1 To 6 ' 对第一堆的元素循环
ka = Mid(aa, a, 1) ' 每次取一个元素
For a2 = a To 6 ' 对第一堆嵌套一层循环
If ka <> Mid(aa, a2, 1) Then ' 第二次取元素,保证是二个,剔除重复的
kaa = ka & Mid(aa, a2, 1) ' 二个元素组合
For b = 1 To 6 ' 对第二堆的循环
kb = Mid(bb, b, 1) ' 每次取一个元素
For b2 = b To 6 ' 加一层循环
If kb <> Mid(bb, b2, 1) Then '
kbb = kb & Mid(bb, b2, 1) ' 取得第二堆的二个元素
For c = 1 To 6 ' 对第三堆循环
kc = Mid(cc, c, 1) '
For c2 = c To 6 ' 对第三堆加一层循环
If kc <> Mid(cc, c2, 1) Then '
kcc = kc & Mid(cc, c2, 1) '
kkk = kaa & kbb & kcc ' 对三堆中取得的,共6个元素进行组合
Cells(x, 1) = kkk ' 记录
x = x + 1 ' 记录定位
End If
Next c2
Next c
End If
Next b2
Next b
End If
Next a2
Next a
End Sub
|
|