首页 > Office专区 > Excel教程 >

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

来源:互联网 2023-02-20 17:37:31 版权归原作者所有,如有侵权,请联系我们

如下图所示,要从A列中的A1、A2、A3、A4、A5、A6、B1、B2、B3、B4、B5、B6共12个数里面选出4个数进行组合,而选择出来的数进行组合后,其顺序不论怎样颠倒都不能重复。经过计算,其组合个数应为:C=(12*11*10*9)/(4*3*2*1)=495。zfq办公区 - 实用经验教程分享!

1Excel表格上面使用VBA进行数组组合zfq办公区 - 实用经验教程分享!

Excel表格使用VBA进行不重复的数组组合zfq办公区 - 实用经验教程分享!

工具/原料

  • 电脑
  • Excel 2010

方法/步骤

  • 1

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

    有了这些规律,接下来就可以着手写VBA代码程序了。zfq办公区 - 实用经验教程分享!

    Excel表格使用VBA进行不重复的数组组合zfq办公区 - 实用经验教程分享!

  • 2

    点击菜单栏上面的【开发工具】,再点击工具栏里面的【Visual Vasic】打开VBA编辑器。zfq办公区 - 实用经验教程分享!

    Excel表格使用VBA进行不重复的数组组合zfq办公区 - 实用经验教程分享!

  • 3

    在VBA编辑器的菜单栏上面点击【插入】,【模块】。zfq办公区 - 实用经验教程分享!

    Excel表格使用VBA进行不重复的数组组合zfq办公区 - 实用经验教程分享!

  • 4

    在代码框里面输入以下VBA程序:zfq办公区 - 实用经验教程分享!

    Sub Zuhe()zfq办公区 - 实用经验教程分享!

    zfq办公区 - 实用经验教程分享!

    Dim i, j, k, l, m As Longzfq办公区 - 实用经验教程分享!

    Dim a, b, c, d As Stringzfq办公区 - 实用经验教程分享!

    m = 0 '将m的初始值设为0,代表的是第几行zfq办公区 - 实用经验教程分享!

    Set mysheet1 = ThisWorkbook.Worksheets("Sheet1") '工作表定义zfq办公区 - 实用经验教程分享!

    zfq办公区 - 实用经验教程分享!

    For i = 1 To 9 '第一个数值只能到第9个位置,即:12-4 1zfq办公区 - 实用经验教程分享!

    For j = 1 To 10 '第二个数值只能到第10个位置,即:12-4 2zfq办公区 - 实用经验教程分享!

    For k = 1 To 11 '第三个数值只能到第11个位置,即:12-4 3zfq办公区 - 实用经验教程分享!

    For l = 1 To 12 '第四个数值只能到第12个位置,即:12-4 4zfq办公区 - 实用经验教程分享!

    a = mysheet1.Cells(i, 1) '将第i个单元格里面的数值赋给azfq办公区 - 实用经验教程分享!

    If j > i And j > i Then '如果已经选择第i个单元格里面的数值,则不能再选择,且选择的单元格需要大于izfq办公区 - 实用经验教程分享!

    b = mysheet1.Cells(j, 1)zfq办公区 - 实用经验教程分享!

    If k > i And k > j And k > j Then '如果已经选择第i、j个单元格里面的数值,则不能再选择,且选择的单元格需要大于jzfq办公区 - 实用经验教程分享!

    c = mysheet1.Cells(k, 1)zfq办公区 - 实用经验教程分享!

    If l > i And l > j And l > k And l > k Then '如果已经选择第i、j、k个单元格里面的数值,则不能再选择,且选择的单元格需要大于kzfq办公区 - 实用经验教程分享!

    d = mysheet1.Cells(l, 1)zfq办公区 - 实用经验教程分享!

    m = m 1zfq办公区 - 实用经验教程分享!

    mysheet1.Cells(m, 2) = a & b & c & d '将选择出来的数值进行组合放到第2列zfq办公区 - 实用经验教程分享!

    End Ifzfq办公区 - 实用经验教程分享!

    End Ifzfq办公区 - 实用经验教程分享!

    End Ifzfq办公区 - 实用经验教程分享!

    Nextzfq办公区 - 实用经验教程分享!

    Nextzfq办公区 - 实用经验教程分享!

    Nextzfq办公区 - 实用经验教程分享!

    Nextzfq办公区 - 实用经验教程分享!

    zfq办公区 - 实用经验教程分享!

    End Subzfq办公区 - 实用经验教程分享!

    Excel表格使用VBA进行不重复的数组组合zfq办公区 - 实用经验教程分享!

  • 4相关内容未经许可获取自百度经验
  • 5

    在这程序里面,主要是逐一递增的进行选择,后面要选择的数不能重复并且要比前一个数选择的位置大,最后进行组合。zfq办公区 - 实用经验教程分享!

  • 6

    按下【F5】键运行VBA程序,也可点击VBA编辑器工具栏里面的运行图标运行程序。zfq办公区 - 实用经验教程分享!

    Excel表格使用VBA进行不重复的数组组合zfq办公区 - 实用经验教程分享!

  • 7

    程序运行完成之后,就可以看到组合的结果。其组合数填充到495行,与计算出来的组合个数相符。zfq办公区 - 实用经验教程分享!

    Excel表格使用VBA进行不重复的数组组合zfq办公区 - 实用经验教程分享!

  • 注意事项

    • 个人经验,仅供参考。

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!zfq办公区 - 实用经验教程分享!


    标签: excel表格使用重复组合

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号