这个问题长期以来严重困扰我的工作,手工操作的话,工作量太大了。跪请高手指点。
比如:
A列B列C列D列E列F列1行abcdef2行123583行mns
每列中选择一个,如果该列只有一个数字,则每次都选择这个数字,这样会有如下若干行数字:
A列B列C列D列E列F列5行abcdef6行1bcdef7行mbcdef8行a2cdef9行ancdef...........
等,新组合成的数字从第五行开始,向下依次显示出来。请问这个过程用VBA如何实现?
跪请高手帮忙,请各位大侠不吝赐教。小生将感恩戴德,千恩万谢。并把我的财富值全部供出。虽然不多,敬请笑纳!谢谢了!!!!!!
请高手可以把代码发到我的邮箱里:[email protected] 也可直接在下面回答。
再次万分感谢!!!
比如:
每列中选择一个,如果该列只有一个数字,则每次都选择这个数字,新组合成的数字从第五行开始,向下依次显示出来。这样会有如下若干行数字:
请问这个过程用VBA如何实现?跪请高手帮忙,请各位大侠不吝赐教。小生将感恩戴德,千恩万谢。
jjchangyuan
该方案我试了一下,貌似不行呀!但也非常谢谢你的支持。
该方案绝对是正确的,因为你现在的数据是6列,组合较多,同时与你举例列出的组合顺序不一样,所以你认为不正确。其实最终结果与你逐个给出的是一样的,是正确的。你可以减少列数试一下,比如用3列,行数也尽量少一点,这样可以很快穷尽所有组合,方便验证公式是否正确。
追问谢谢了,确实可以!
全部列出,最好是通用代码,因为每一列的数据是随机的。
追答Sub 列出所有组合()
Dim la%, lb%, lc%, le%, lf%, sum_row%
Dim ka%, kb%, kc%, ke%, kf%, i%
'求出各列的有效行数, 其中有一个字符的可以看出为D列
la = [a65000].End(xlUp).Row
lb = [b65000].End(xlUp).Row
lc = [c65000].End(xlUp).Row
le = [e65000].End(xlUp).Row
lf = [f65000].End(xlUp).Row
'所有组合数
sum_row = la * lb * lc * le * lf
MsgBox "总共有: " & sum_row & " 种组合"
i = 5
For ka = 1 To la
For kb = 1 To lb
For kc = 1 To lc
For ke = 1 To le
For kf = 1 To lf
Cells(i, "a") = Cells(ka, "a")
Cells(i, "b") = Cells(kb, "b")
Cells(i, "c") = Cells(kc, "c")
Cells(i, "D") = "d"
Cells(i, "e") = Cells(ke, "e")
Cells(i, "f") = Cells(kf, "f")
i = i + 1
Next kf
Next ke
Next kc
Next kb
Next ka
End Sub
可以用数组优化