我需要找出一种方法来输出结果的所有组合的行数(最好,如果可能在一个单一行)Excel vba如何将数字输出组合到Excel行?
我有8位数{1,2,3,4,5, 6,7,8}组合的典型输出是i; j(i,j是来自集合的数字,如果选择两个,则为i < j)。生成结果很简单:
Dim Myarray_2 As String
Dim sht as Worksheet
set sht = Sheet1
Myarray_2 = "" ' pick up 2 out of 8
For j = 2 To 8
For i = 1 To j - 1
sht.Cells(i + 1, j + 1) = Str(MyArray(i)) + ";" + Str(MyArray(j))
Myarray_2 = Myarray_2 + Str(MyArray(i)) + ";" + Str(MyArray(j)) + "|"
Next i
Next j
这是拿起2的例子,我已经将它输出到工作表的行。
我也有解决方案,拿起3,现在我的问题是其余的情况下,如何得到输出?
下面是用于拾取3溶液:
Dim Myarray_3 As String
Myarray_3 = "" ' 3 out of 8
k = 3
Do While k >= 3 And k <= 8
'inner loop through i j
For j = 2 To k - 1
For i = 1 To j - 1
sht.Cells(i + 11, j - 1 + m) = Str(MyArray(i)) + ";" + Str(MyArray(j)) + ";" + Str(MyArray(k))
Myarray_3 = Myarray_3 + Str(MyArray(i)) + ";" + Str(MyArray(j)) + ";" + Str(MyArray(k)) + "|"
Next i
Next j
k = k + 1
m = m + 7
Loop
通过MYARRAY(ⅰ)被初始化为MYARRAY(i)所述的方式= I
是'1,2'和'2,1'是一回事吗?如果是这样,嵌套循环会做到这一点。 – Jeeped
我
我会一直说的第一件事就是在数组中做你的组合工作。然后在最后输出数组.. – MacroMarc