中易网

用Excel实现一组数据的组合

答案:5  悬赏:30  
解决时间 2021-01-17 08:39
  • 提问者网友:斑駁影
  • 2021-01-16 14:37
用Excel实现一组数据的组合
最佳答案
  • 二级知识专家网友:蓝房子
  • 2021-01-16 14:56
您的列只显示到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
全部回答
  • 1楼网友:忘川信使
  • 2021-01-16 17:24
Vba
  • 2楼网友:孤老序
  • 2021-01-16 16:29
这个需要用到编程了
  • 3楼网友:零点过十分
  • 2021-01-16 15:50
首先按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的编程非常不熟悉,所以运行的效果非常差,不过还是感谢您的回答
  • 4楼网友:痴妹与他
  • 2021-01-16 15:39

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

如图,比如你的第二列,你可以把数据放到第二行,总数输入6,取样输入3,然后点击按钮,程序会自动列出所有组合。
不过你需要把每列的数据拷贝到其他表完成最后的合并。
提示,如果你输入第二行数据时,按照大到小的方式,就应该可以得到你需要的次序
希望可以帮到你
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息