用Excel实现一组数据的组合

图1为目标数据组,存放在EXCEL表格的SHEET1中,每一列中的数据互不相同,列与列之间相互独立,我想通过EXCEL将每一列的数据进行从大到小的(Cn取3)全组合,并以... 图1为目标数据组,存放在EXCEL表格的SHEET1中,每一列中的数据互不相同,列与列之间相互独立,我想通过EXCEL将每一列的数据进行从大到小的(C n取3)全组合,并以图2的方式存放在SHEET2中,每一列的全组合空一行隔开。求高手支招! 展开
 我来答
万年金刚钻
2014-06-21 · TA获得超过1.6万个赞
知道大有可为答主
回答量:1.1万
采纳率:0%
帮助的人:3545万
展开全部

我有个自己编写的全组合工具,可以帮你完成C取n的工作,不过有多少列,你就要运行多少次,当然实际数据需要你自行填写:

如图,比如你的第二列,你可以把数据放到第二行,总数输入6,取样输入3,然后点击按钮,程序会自动列出所有组合。

不过你需要把每列的数据拷贝到其他表完成最后的合并。

提示,如果你输入第二行数据时,按照大到小的方式,就应该可以得到你需要的次序

希望可以帮到你

匿名用户
2014-06-21
展开全部
首先按Alt+F11 进入VBA代码编辑器
找到存放数据对应表名,双击打开,复制以下代码,并运行

Sub test()
Dim Arr(), n, Temp
Arr = Range("A1").CurrentRegion
'==================================================================================
'从高到低排序
For j = 1 To UBound(Arr, 2)
For i = 1 To UBound(Arr)
For k = i To 2 Step -1
If Arr(k - 1, j) < Arr(k, j) Then
Temp = Arr(k - 1, j)
Arr(k - 1, j) = Arr(k, j)
Arr(k, j) = Temp
End If
Next
Next
Next

'==================================================================================
'输入内容
Range("A15:C" & UBound(Arr) + 15).Value = Application.Transpose(Arr)
End Sub
追问
这个运行结果好像是存放在了当前表里,而且也不是全展开,抱歉,我对VBA的编程非常不熟悉,所以运行的效果非常差,不过还是感谢您的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hunter2k
推荐于2016-08-07 · TA获得超过3987个赞
知道小有建树答主
回答量:1376
采纳率:66%
帮助的人:647万
展开全部
您的列只显示到W,不知后面有没有,W对应的列数是23,如果后面还有,自己改动,还有,我的程序是按由小到大的原始顺序来的,所以结果和您的顺序不一样。
方法是,工具,宏,宏,新建宏,删除原来代码,复制以下代码。
运行时点工具,宏,宏,选中cal,点执行,如果被阻止的话,从宏子菜单里点安全性,选择最低,保存,关闭,重新打开就行了。

Sub cal()
Sheets("sheet1").Select '选中表1
Row = 0
For col = 1 To 23 '23是W列的数字形式,如果后面还有,作相应改动。
i = 1
Row = Row + 1
Do While Sheets("sheet1").Cells(i + 2, col) <> "" '循环直到当前列的倒数第3个数字
j = i + 1
Do While Sheets("sheet1").Cells(j + 1, col) <> "" '循环直到当前列的倒数第2个数字
k = j + 1
Do While Sheets("sheet1").Cells(k, col) <> "" '循环直到当前列的最后1个数字
Sheets("sheet2").Cells(Row, 3) = Sheets("sheet1").Cells(i, col)
Sheets("sheet2").Cells(Row, 2) = Sheets("sheet1").Cells(j, col)
Sheets("sheet2").Cells(Row, 1) = Sheets("sheet1").Cells(k, col)
k = k + 1
Row = Row + 1
Loop
j = j + 1
Loop
i = i + 1
Loop
Next
End Sub
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-06-21
展开全部
这个需要用到编程了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
可爱就是笑
2014-06-21 · TA获得超过1599个赞
知道大有可为答主
回答量:4011
采纳率:70%
帮助的人:634万
展开全部
Vba
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式