Excel表格使用VBA进行不重复的数组组合

2025-10-26 15:17:11

1、先看一个简单的例子来寻找规律,如:从1、2、3、4、5共5个数里面选出3个数进行组合,那么就有10种组合方法。其按顺序进行组合时(不容易出错),第一个数最大只能到3,排在第二个数的可以到4,第三个可以到5,并且在排序时第三个数>第二个数>第一个数。

有了这些规律,接下来就可以着手写VBA代码程序了。

Excel表格使用VBA进行不重复的数组组合

2、点击菜单栏上面的【开发工具】,再点击工具栏里面的【Visual Vasic】打开VBA编辑器。

Excel表格使用VBA进行不重复的数组组合

3、在VBA编辑器的菜单栏上面点击【插入】,【模块】。

Excel表格使用VBA进行不重复的数组组合

4、在代码框里面输入以下VBA程序:

Sub Zuhe()

Dim i, j, k, l, m As Long

Dim a, b, c, d As String

m = 0  '将m的初始值设为0,代表的是第几行

Set mysheet1 = ThisWorkbook.Worksheets("Sheet1")  '工作表定义

For i = 1 To 9  '第一个数值只能到第9个位置,即:12-4+1

  For j = 1 To 10  '第二个数值只能到第10个位置,即:12-4+2

    For k = 1 To 11  '第三个数值只能到第11个位置,即:12-4+3

       For l = 1 To 12  '第四个数值只能到第12个位置,即:12-4+4

        a = mysheet1.Cells(i, 1)  '将第i个单元格里面的数值赋给a

  If j <> i And j > i Then '如果已经选择第i个单元格里面的数值,则不能再选择,且选择的单元格需要大于i

    b = mysheet1.Cells(j, 1)

     If k <> i And k <> j And k > j Then '如果已经选择第i、j个单元格里面的数值,则不能再选择,且选择的单元格需要大于j

      c = mysheet1.Cells(k, 1)

       If l <> i And l <> j And l <> k And l > k Then '如果已经选择第i、j、k个单元格里面的数值,则不能再选择,且选择的单元格需要大于k

        d = mysheet1.Cells(l, 1)

        m = m + 1

        mysheet1.Cells(m, 2) = a & b & c & d  '将选择出来的数值进行组合放到第2列

        End If

      End If

   End If

       Next

     Next

  Next

Next

End Sub

Excel表格使用VBA进行不重复的数组组合

5、在这程序里面,主要是逐一递增的进行选择,后面要选择的数不能重复并且要比前一个数选择的位置大,最后进行组合。

6、按下【F5】键运行VBA程序,也可点击VBA编辑器工具栏里面的运行图标运行程序。

Excel表格使用VBA进行不重复的数组组合

7、程序运行完成之后,就可以看到组合的结果。其组合数填充到495行,与计算出来的组合个数相符。

Excel表格使用VBA进行不重复的数组组合

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢