excel排列组合问题

例如:
在我的EXCEl文件中有下列几组数据:
A1至A5分别是1、2、3、4、5
B1至B5分别是6、7、8、9、10
C1至C5分别是11、12、13、14、15
ABC列中每次取三个数进行排列组合,怎么才能分别填充到D、E、F列中?

如A列随机取了1和2和3,B列取了6和7和8,C列取了11和12和13,然后D、E、F就分别显示1和2和3、6和7和8、11和12和13

怎么做出来呢?求大神解答!一步一步来。

假设你是靠鼠标点击作为随机数的话,用vba写下代码如下:

ALT+F11进入vba编辑器

示例如附件。


追问

不是鼠标点,是把所有组合全部显示出来,可以吗?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-01

Sub a()
Dim str1$, str2$, str3$, i%, j%
For i = 1 To 3
    str1 = ""
    str2 = ""
    str3 = ""
    str1 = Cells(Int(Rnd() * 5 + 1), i)
    str2 = Cells(Int(Rnd() * 5 + 1), i)
    str3 = Cells(Int(Rnd() * 5 + 1), i)
    Do Until str2 <> str1
       str2 = Cells(Int(Rnd() * 5 + 1), i)
    Loop
    Do Until str3 <> str2 And str3 <> str1
       str3 = Cells(Int(Rnd() * 5 + 1), i)
    Loop
    Cells(1, i + 3) = str1 & "和" & str2 & "和" & str3
Next i
End Sub

追问

能把所有结果全部显示出来吗?不仅仅是随机数....

追答Sub b()
Dim i%, j%, k%, a%, b%, c%
For i = 1 To 3
    k = 1
    For a = 1 To 3
        For b = a + 1 To 4
            For c = b + 1 To 5
                 Cells(k, i + 3) = Cells(a, i) & "和" & Cells(b, i) & "和" & Cells(c, i)
                 k = k + 1
            Next c
        Next b
    Next a
Next i

End Sub

这样吗?

追问

辛苦啦,但是这个缺了好多啊~~应该一共有1000种....可以全部列出来嘛?实在不好意思啊~

追答Sub b()
Dim i%, j%, k%, a%, b%, c%
For i = 1 To 3
    k = 1
    For a = 1 To 3
        For b = a + 1 To 4
            For c = b + 1 To 5
                 Cells(k, i + 6) = Cells(a, i) & "和" & Cells(b, i) & "和" & Cells(c, i)
                 k = k + 1
            Next c
        Next b
    Next a
Next i
k = 1
For a = 1 To 10
    Cells(k, 4) = Cells(a, 7)
    For b = 1 To 10
        Cells(k, 5) = Cells(b, 8)
        For c = 1 To 10
            Cells(k, 6) = Cells(c, 9)
            k = k + 1
        Next c
    Next b
Next a
For a = 4 To 5
    For b = 1 To [f65536].End(xlUp).Row
        If Cells(b, a) = "" Then
           Cells(b, a) = Cells(b - 1, a)
        End If
    Next b
Next a
Range("g1:i10").Clear
End Sub

本回答被提问者采纳
第2个回答  2013-08-01
你先说怎么选取。追问

随机选取~每组5个数字随机选取3个,一个3组,所以一共9个数字

追答

你要想随机取,就必须要借助vba了,否则单纯rand有可能会出现重复数值。

相似回答