返回

Excel专题问题求助

◆ 微信扫描二维码分享
◆ 手机QQ扫描二维码,点击右上角···分享到QQ好友或QQ空间
请拨打电话:4008017500

更多 关闭

求助各位老师

终究慧富

2022-04-11 12:04:49

有4组不同的5胆码数据,进行排列组合,总共24组,代码如下:

Dim N '用于增加动态数组下标
Sub perm(arr, k, m, brr()) '全排列
'arr为需要全排列的数组。k为数组下标,m为上标,brr为存放结果的数组
Dim i As Integer
If k > m Then
N = N + 1
  For i = 0 To m
  
   ReDim Preserve brr(1 To m + 1, 1 To N)
   brr(i + 1, N) = arr(i)
  Next i
  
Else
   For i = k To m
       Call swap(arr, k, i)
       Call perm(arr, k + 1, m, brr())
       Call swap(arr, k, i)
  Next i
End If
End Sub

Sub swap(arr, i, j) '数据交换
Dim t
t = arr(i)
arr(i) = arr(j)
arr(j) = t
End Sub

Sub main0159()
Dim brr()
N = 0
arr = Array("01259", "04356", "12789", "34678") '对arr全排列
Call perm(arr, LBound(arr), UBound(arr), brr)
[A1].Resize(UBound(brr, 2), UBound(brr)) = Application.Transpose(brr)
End Sub

代码执行后,发现没有0这个数据,如图A1E24所示。请教一下怎么修改?H,K,N列的数据再次组合,要求每个组合里面不能含有同一组5胆,如O,P,Q,R列所示,实现该功能?请教各位老师帮忙,万分感谢!

附件: 2243597
转换带X.xlsx
上一篇 下一篇

601

2