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

2025-10-09 02:38:27

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 Long

Application.ScreenUpdating = False  '关闭Excel表格屏幕刷新,提高运行速度

On Error Resume Next   '忽略运行过程中出现的错误

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

mysheet1.Range("A:F").Clear   '清空A:F列

For i7 = 21 To 183

m = 0            '每次执行时,均把m的初始值设为0

For 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)行的单元格

Next

Application.ScreenUpdating = True  '恢复Excel表格结果显示

End Sub

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

5、在程序里边,主要是对For循环结构嵌套的使用。简单的例子如下:

For i = 1 To 3

  For j = 1 To 3

  Next

Next

在第一个For执行一次,第二个For要执行三次;到第一个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求解未知数之和的数组个数

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