ExcelVBA对一组数组进行全组合操作

SHEET1中A1:A12存放着1~12,想在SHEET2的A1:A495中列出1~12中任取4个数的全组合。要求:1、组合在单元格中存放格式为:a,b,c,d2、单元格... SHEET1中A1:A12存放着1~12,想在SHEET2的A1:A495中列出1~12中任取4个数的全组合。
要求:
1、组合在单元格中存放格式为:a,b,c,d
2、单元格中存放的数组必须从大到小。
3、类比出如果是A1:A35存放1~35,任取5,任取6,任取7。
各位大侠,本人没学过ExcelVBA,急需各位帮忙!方便的话解说一下每个语句是什么原理
补充:
十分感谢一楼的精彩回答!但是我的组合问题是希望能满足从列中取数,例如SHEET1中A1:A12={2,5,8,9,11,14,22,23,24,26,28,35},该如何编程???
展开
 我来答
hunter2k
2014-03-28 · TA获得超过3986个赞
知道小有建树答主
回答量:1376
采纳率:66%
帮助的人:641万
展开全部
Sub paixu()
Dim arr(4)
Row = 1 '循环,共495行 ,row为记录行号的变量,每次增大1
For i = 12 To 1 Step -1 '排列组合题,组合不出现重复,为实现从大到小排序,取数时从大开始
For j = i - 1 To 1 Step -1 '最大数为11
For k = j - 1 To 1 Step -1 '最大数为10
For l = k - 1 To 1 Step -1 '9
arr(1) = Sheets("sheet1").Cells(i, 1)
arr(2) = Sheets("sheet1").Cells(j, 1)
arr(3) = Sheets("sheet1").Cells(k, 1)
arr(4) = Sheets("sheet1").Cells(l, 1)
For m = 1 To 3 ‘排序,由大到小
For n = m + 1 To 4
If arr(n) > arr(m) Then
swap_ = arr(m)
arr(m) = arr(n)
arr(n) = swap_
End If
Next
Next ‘排序结束
Sheets("sheet2").Cells(Row, 1) = arr(1) 'sheet2数据表里,row行的第一列显示i的值,后面三行同理
Sheets("sheet2").Cells(Row, 2) = arr(2)
Sheets("sheet2").Cells(Row, 3) = arr(3)
Sheets("sheet2").Cells(Row, 4) = arr(4)
Row = Row + 1
Next
Next
Next
Next
End Sub
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式