乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > 如何利用<em>EXCEL</em>解决排列组合问题-excel order by,order

如何利用<em>EXCEL</em>解决排列组合问题-excel order by,order

作者:乔山办公网日期:

返回目录:excel表格制作


Sub a()
Dim a1, a2, a3, a4, a5, a6, b, c
b = WorksheetFunction.CountA(Rows(1))
For a1 = 2 To 6
If WorksheetFunction.CountA(Rows(a1)) > b _
Then b = WorksheetFunction.CountA(Rows(a1))
Next
c = 2
For a1 = 2 To b
If Cells(1, a1) <> "" Then
For a2 = 2 To b
If Cells(2, a2) <> "" Then
For a3 = 2 To b
If Cells(3, a3) <> "" Then
For a4 = 2 To b
If Cells(4, a4) <> "" Then
For a5 = 2 To b
If Cells(5, a5) <> "" Then
For a6 = 2 To b
If Cells(6, a6) <> "" Then
Cells(8, c) = Cells(1, a1)
Cells(9, c) = Cells(2, a2)
Cells(10, c) = Cells(3, a3)
Cells(11, c) = Cells(4, a4)
Cells(12, c) = Cells(5, a5)
Cells(13, c) = Cells(6, a6)
c = c + 1

打开"排列组合.XLS"

2
打开"Microsoft Query"

3
选择数据源:EXCEL FILES*,不要勾选"使用查询向导" 确定

4
打开存放在电脑E:盘上的"排列组合.xls"文件,作为外部数据源

5
添加"职员$"工作表到Query,并关闭

6
点击Query工具栏中"SQL"按钮

7
填写如下SQL语句:
select *
from [职员$] A,[职员$] B,[职员$] C
where A.职员<B.职员 and B.职员<C.职员
order by A.职员,B.职员,C.职员

8
点击确定

9
稍微等待一下,系统会把满足条件所用排列组合显示出来

10
最后选择Query"文件"菜单下"将数据返回到EXCEL"选项

11
弹出"导入数据"对话框,鼠标单击D1单元格,确认数据导入在D1单元格,确定,当然也可以把结果放在新工作表中

12
因为全排列的数据量很大,有969种排列组合,把EXCEL表进行了窗口冻结操作

13
后续对结果进行处理,打印出抽签条即可
用VBA解决,ALT+F11打开VBA编辑器,插入模块,将以下代码粘贴,按F5运行,7a686964616fe58685e5aeb9331C列为“一:”的结果,D列为“二:”的结果。
Sub sort()
Dim i, j, k1, k2, k3, k4, m As Integer
Sheet1.Activate
Range("C:C").Clear
i = Range("a65535").End(xlUp).Row
j = Range("b65535").End(xlUp).Row
m = 1
For k1 = 1 To i
For k2 = 1 To j
For k3 = k2 + 1 To j
Cells(m, 3) = Cells(k1, 1) & Cells(k2, 2) & Cells(k3, 2)
m = m + 1
Next
Next
Next
Range("D:D").Clear
m = 1
For k1 = 1 To i
For k2 = 1 To j
For k3 = k2 + 1 To j
For k4 = k3 + 1 To j
Cells(m, 4) = Cells(k1, 1) & Cells(k2, 2) & Cells(k3, 2) & Cells(k4, 2)
m = m + 1
Next
Next
Next
Next
End Sub

  • 打开"排列组合.XLS"

  • 2

    打开"Microsoft Query"

  • 3

    选择数据源:EXCEL FILES*,不要勾选"使用查询向导" 确定

  • 打开存放在电脑E:盘上的"排列组合.xls"文件,作为外部数据源

  • 添加"职员$"工作表到Query,并关闭

  • 点击Query工具栏中"SQL"按钮

  • 填写如下SQL语句: 

    select *

    from [职员$] A,[职员$] B,[职员$] C

    where A.职员<B.职员 and B.职员<C.职员

    order by A.职员,B.职员,C.职员

  • 点击确定

  • 稍微等待一下,系统会把满足条件所用排列组合显示出来

  • 最后选择Query"文件"菜单下"将数据返回到EXCEL"选项

  • 弹出"导入数据"对话框,鼠标单击D1单元格,确认数据导入在D1单元格,确定,当然也可以把结果放在新工作表中

  • 因为全排列的数据量很大,有969种排列组合,把EXCEL表进行了窗口冻结操作

  • 后续对结果进行处理,打印出抽签条即可

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网