如何利用Excel解决排列组合问题(不得重复)

如何利用Excel解决排列组合问题(不得重复)公司购置新设备,设备科共有19人,只有3个名额可免费去国外培训,为了体现公平公证的原则,决定通过抽签的方式确定人员,,如何利... 如何利用Excel解决排列组合问题(不得重复)公司购置新设备,设备科共有19人,只有3个名额可免费去国外培训,为了体现公平公证的原则,决定通过抽签的方式确定人员,,如何利用EXCEL来列出所有的组合,最终打印出抽签条呢? 展开
 我来答
weizhong1688
2017-10-02 · TA获得超过1247个赞
知道小有建树答主
回答量:1514
采纳率:61%
帮助的人:597万
展开全部

这个组合有969种,需要准备969个条子。

如姓名在A列,从A2开始。

VBA代码:

Sub c()
    ScreenUpdating = False
    p = 1
    For i = 2 To 18
        For j = i + 1 To 19
            For k = j + 1 To 20
                Cells(p, 2) = Cells(i, 1) & "," & Cells(j, 1) & "," & Cells(k, 1)
                p = p + 1
            Next k
        Next j
    Next i
    ScreenUpdating = True
End Sub

我的机子用了46秒,cpu达100%

下面为你提供VBA程序,先执行宏1,

再执行宏2,每执行一次就会变。可反复执行。

'姓名在A列,从A2开始。结果在B列。
Sub 宏1()
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "=RAND()"
    Selection.AutoFill Destination:=Range("B2:B20"), Type:=xlFillDefault
    Cells(2, 3).Formula = "=a2"
    Cells(3, 3).Formula = "=a3"
    Cells(4, 3).Formula = "=a4"
    宏2
End Sub
Sub 宏2()
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B2:B20") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Sheet1").Sort
        .SetRange Range("A1:B20")
        .Apply
    End With
End Sub
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式