使用VBA求解未知数之和的数组个数

 时间:2024-10-13 09:54:33

1、程序解题思路:在之前的《使用VBA求解六个未知数之和》经验里面可知,I1是一个固定值,而这回的i7可以看作是21~183之间的变量,而这个变量就不需要手动输入,在它的外边套入一个For结构的语句即可。

2、打开Excel表格,点击菜单栏上面的【开发工具】,【Visual Basic】,或者使用【Alt+F11】组合键打开VBA编辑器。

使用VBA求解未知数之和的数组个数

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

使用VBA求解未知数之和的数组个数

4、在代码窗口里面输入以下程序:Sub QiuJieGeShu()Dim m, i1, i2, i3, i4, i5, i6, i7 As LongApplicati泠贾高框on.ScreenUpdating = False '关闭Excel表格屏幕刷新,提高运行速度On Error Resume Next '忽略运行过程中出现的错误Set mysheet1 = ThisWorkbook.Worksheets("Sheet1") '工作表定义mysheet1.Range("A:F").Clear '清空A:F列For i7 = 21 To 183m = 0 '每次执行时,均把m的初始值设为0For i1 = 1 To 28 '第一个数值只能到第28个位置,即:33-6+1 For i2 = 1 To 29 '第二个数值只能到第29个位置,即:33-6+2 For i3 = 1 To 30 '第三个数值只能到第30个位置,即:33-6+3 For i4 = 1 To 31 '第三个数值只能到第31个位置,即:33-6+4 For i5 = 1 To 32 '第三个数值只能到第32个位置,即:33-6+5 For i6 = 1 To 33 '第三个数值只能到第33个位置,即:33-6+6 If i2 > i1 Then '选择的单元格需要大于i1 If i3 > i2 Then '选择的单元格需要大于i2 If i4 > i3 Then '选择的单元格需要大于i3 If i5 > i4 Then '选择的单元格需要大于i4 If i6 > i5 Then '选择的单元格需要大于i5 If i1 + i2 + i3 + i4 + i5 + i6 = i7 Then '如果相加的值与i7单元格里面的值相等,则执行 m = m + 1 '累计满足条件的个数 End If End If End If End If End If End If Next Next Next Next Next Next mysheet1.Cells(i7 - 19, 1) = i7 '将i7的值填入第1列(i7-19)行的单元格 mysheet1.Cells(i7 - 19, 2) = m '将m的值填入第2列(i7-19)行的单元格NextApplication.ScreenUpdating = True '恢复Excel表格结果显示End Sub

使用VBA求解未知数之和的数组个数

5、在程序里边,主要是对For循环结构嵌套的使用。简单的例子如下:For i = 1 哌囿亡噱To 3 For j = 1 To 3 NextNext在第一个For执行一次,第二个F泠贾高框or要执行三次;到第一个For执行一次,第二个For要执行三次;再到第一个For执行一次,第二个For要执行三次。循环执行结束,再执行后面的程序。

6、点击VBA编辑器菜单栏里面的“运行”图标,或者按下F5键运行程序。(预计需要等待三个多小时的时间,所以在电脑空闲的时候再运行)

使用VBA求解未知数之和的数组个数

7、经过漫长的等待之后,计算的结果终于出来了。经过计算总个数对比,与33个数里面选出6个数不重复的组合是一致的,C=(33*32*31*30*29*28)/(6*5*4*3*2*1)=1107568。

使用VBA求解未知数之和的数组个数
  • 如何用Excel计算两个日期之间的工作日?
  • excel中数据区域如何转换成单列数据
  • Excel通过Char函数将ACSII码值转为对应英文
  • 怎样使用VBA引用区域中非空值?
  • VBA实现同工作簿下多工作表单元格内容同步更新
  • 热门搜索
    书香伴我行手抄报 有关于安全的手抄报 卫生健康手抄报 备战期中手抄报 垃圾分类的手抄报 安全手抄报花边 青春期手抄报内容 创模手抄报 感恩的心手抄报大全 绿色环保手抄报资料