抖音点赞粉丝推广运营虚拟服务平台 - 亿抖网欧梦公司

抖音粉丝点赞服务
打通抖音运营之路

excelfor循环进行排列组合(指定数字随机组合生成器)

今天一个不常联系的小伙伴突然给我发来消息说:“我眼睛痛!”我当时不禁在想:“我又不是医生,眼睛痛找我也没用啊(迷茫脸)”。然而本着关心爱护小伙伴的原则,我于是关切地问道:“是不是对着屏幕太久了呀?”,接下来这位小伙伴就毫不客气地向我扔过来一张Excel表.。

打开一看,一下子就明白了她眼睛痛的原因了。我把她的问题简化后如下:

A列共有20个数据,从其中取三个数字其和等于107,求出这三个值分别是多少?

 

按照排列组合的原理,如果穷举的话一共有1140(

)种可能,如果每个都要计算的话工作量可真让人受不了。而且我们这里只是模拟了20个数字,眼睛痛的小伙伴(心疼脸)的数据量可不止这么多啊。一个个计算这条路肯定是走不通了,这时就不禁想到用VBA来解决了。那么,用VBA我们该怎么解决这个问题呢?

Sub three_nums()
Dim i, j, k As Integer
Dim arr()
arr = Range("a1:a21")
For i = 2 To 21
 For j = 2 To 21
 For k = 2 To 21
 If arr(i, 1) + arr(j, 1) + arr(k, 1) = Range("d2") Then
 Range("d3") = arr(i, 1)
 Range("d4") = arr(j, 1)
 Range("d5") = arr(k, 1)
 GoTo 1
 End If
 Next
 Next
Next
1
MsgBox "所求结果为:" & vbCrLf & arr(i, 1) & ";" & arr(j, 1) & ";" & arr(k, 1)
End Sub

运行之后可以得到结果如下:

 

问题轻松解决,分析加上写代码以及运行,总时间不超过5分钟,妈妈再也不担心我眼睛痛了。

今天的晚饭有着落了(幸福脸)。

总结一下:

  • 上述代码主要用了三个For循环嵌套,把每一个结果都遍历一遍,然后用If进行判断,同时在满足条件后就直接用GoTo跳出循环。

当然,在这个过程中最提高效率的部分就是使用了数组arr,有效地提高了代码的运行效率。

我们的缺点麻烦您能提出,谢谢支持!

联系我们 网站地图