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

 时间:2024-10-14 06:18:10

如下图所示,要从A列中的AAA补朱锚卦AAABBBBBB6共12个数词礅湛锿里面选出4个数进行组合,而选择出来的数进行组合后,其顺序不论怎样颠倒都不能重复。经过计算,其组合个数应为:C=(12*11*10*9)/(4*3*2*1)=495。

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

工具/原料

电脑

Excel2010

方法/步骤

1、先看一个简单的例子来寻找规律,如:从4粑颇岔鲷、5共5个数里面选出3个数进行组合,那么就有10种耘资诡拨组合方法。其按顺序进行组合时(不容易出错),第一个数最大只能到3,排在第二个数的可以到4,第三个可以到5,并且在排序时第三个数>第二个数>第一个数。有了这些规律,接下来就可以着手写VBA代码程序了。

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

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

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

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

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

4、在代码框里面输入以下VBA程序:SubZuhe()Dimi,j,k,l,咯悝滩镞mAsLongDima,b,c,dAsStringm=0媪青怍牙'将m的初始值设为0,代表的是第几行Setmysheet1=ThisWorkbook.Worksheets("Sheet1")'工作表定义Fori=1To9'第一个数值只能到第9个位置,即:12-4+1Forj=1To10'第二个数值只能到第10个位置,即:12-4+2Fork=1To11'第三个数值只能到第11个位置,即:12-4+3Forl=1To12'第四个数值只能到第12个位置,即:12-4+4a=mysheet1.Cells(i,1)'将第i个单元格里面的数值赋给aIfj<>iAndj>iThen'如果已经选择第i个单元格里面的数值,则不能再选择,且选择的单元格需要大于ib=mysheet1.Cells(j,1)Ifk<>iAndk<>jAndk>jThen'如果已经选择第i、j个单元格里面的数值,则不能再选择,且选择的单元格需要大于jc=mysheet1.Cells(k,1)Ifl<>iAndl<>jAndl<>kAndl>kThen'如果已经选择第i、j、k个单元格里面的数值,则不能再选择,且选择的单元格需要大于kd=mysheet1.Cells(l,1)m=m+1mysheet1.Cells(m,2)=a&b&c&d'将选择出来的数值进行组合放到第2列EndIfEndIfEndIfNextNextNextNextEndSub

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

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

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

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

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

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

怎样使用VBA统计选区中不重复数据个数? 怎样使用VBA工作表激活事件的运用? excel vba如何在指定位置插入指定格式的行 如何借助VBA快速提取工作表名称? 使用VBA判断并填充颜色
热门搜索
好看的动漫推荐 同人动漫 少先队队徽图片 动漫头像图片 荣威rx5图片