广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

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

    来源:网络收集  点击:  时间:2024-05-09
    【导读】:
    如下图所示,要从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。工具/原料more电脑Excel 2010方法/步骤1/7分步阅读

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

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

    2/7

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

    3/7

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

    4/7

    在代码框里面输入以下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

    5/7

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

    6/7

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

    7/7

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

    注意事项

    个人经验,仅供参考。

    EXCEL数组组合
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.ff371.cn/art_716592.html

    ©2019-2020 http://www.ff371.cn/ 国ICP备20009186号06-24 06:36:41  耗时:0.027