如何利用Excel解决排列组合问题(不得重复)
如何利用Excel解决排列组合问题(不得重复)公司购置新设备,设备科共有19人,只有3个名额可免费去国外培训,为了体现公平公证的原则,决定通过抽签的方式确定人员,,如何利...
如何利用Excel解决排列组合问题(不得重复)公司购置新设备,设备科共有19人,只有3个名额可免费去国外培训,为了体现公平公证的原则,决定通过抽签的方式确定人员,,如何利用EXCEL来列出所有的组合,最终打印出抽签条呢?
展开
1个回答
展开全部
这个组合有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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询