请教vba高手:怎样改写这个宏?

来源:百度知道 编辑:UC知道 时间:2024/06/10 07:41:49
希望将下面这个宏的输出结果(即:从列A里M个数中取任意3个数进行组合)依次显示在E1:G1区域:
Sub 数字组合()
Dim a, b, c, d, e, f, i, j As Single
i = 1
j = Sheet1.[a1].End(xlDown).Row

For a = 1 To j
For b = (a + 1) To j
For c = (b + 1) To j

Cells(i, 5) = Cells(a, 1)
Cells(i, 6) = Cells(b, 1)
Cells(i, 7) = Cells(c, 1)
i = i + 1

Next
Next
Next

End Sub

是想把所有的排列组合都列出来??

现在的结果是所有的组合都有,但排列只有一种是吧?
参考下面方法。
---------------------------------------------------

Sub Macro1()

Dim a, b, c, i, j As Single
i = 1
j = Sheet1.[a1].End(xlDown).Row

'clear E to G
Columns("E:G").Select
Selection.ClearContents

For a = 1 To j
For b = 1 To j
If b <> a Then
For c = 1 To j
If c <> a And c <> b Then
Cells(i, 5) = Cells(a, 1)
Cells(i, 6) = Cells(b, 1)
Cells(i, 7) = Cells(c, 1)
i = i + 1
End If
Next
End If
Next
Next

End Sub

-----------------------------------
其中
>>Columns("E:G").Select
>>Selection.ClearContents
这两句的意思是执行前先把E,F,G列的内容清空,
可以不要。