[英]search numbers in vba excel
我正在寻找一起搜索几个数字(国家彩票); 我必须每次查看5个cloumns,并且有90个数字。 可能性是1.2 1.3 1.4 ... 89.90,我有4005种组合。 算法工作良好,但搜索时间绝对无法管理。 有可能加快研究速度吗?
对于amb = 2至4006
primo = Foglio3.Cells(amb, 1)
secondo = Foglio3.Cells(amb, 2)
ritardo = 0
For cont = 8618 To 2 Step -1
est1 = Foglio2.Cells(cont, 2)
est2 = Foglio2.Cells(cont, 3)
est3 = Foglio2.Cells(cont, 4)
est4 = Foglio2.Cells(cont, 5)
est5 = Foglio2.Cells(cont, 6)
If (primo = est1) Or (primo = est2) Or (primo = est3) Or (primo = est4) Or (primo = est5) Then
If (secondo = est1) Or (secondo = est2) Or (secondo = est3) Or (secondo = est4) Or (secondo = est5) Then
Foglio3.Cells(amb, 3) = ritardo '3 = nazionale
Exit For
End If
End If
ritardo = ritardo + 1
Next cont
Next amb
第一步是在每个循环中停止使用工作表和VBA。 因此,将数据存储在阵列中,然后遍历内存阵列。 如果需要,请更改变量以适合表中的数据类型。 注意:Foglio2和Foglio3的范围引用将需要更改以适合您的数据集。
Dim foglio2() As Variant, foglio3() As Variant
Dim i As Double
Dim primo As Variant, secondo As Variant
Dim est1 As Variant, est As Variant, est3 As Variant, est4 As Variant, est5 As Variant
Dim resultArray() As Variant
foglio3 = Foglio3.Range("A2").CurrentRegion
foglio2 = Foglio2.Range("A2").CurrentRegion
For i = 2 To UBound(foglio2) ' maybe change to 4006?
primo = foglio2(1, 1)
secondo = foglio2(1, 2)
' change J to 8616?
For j = UBound(foglio3) To 2 Step -1
est1 = foglio3(j, 2)
est2 = foglio3(j, 3)
est3 = foglio3(j, 4)
est4 = foglio3(j, 5)
est5 = foglio3(j, 6)
ReDim Preserve resultArray(i)
If (primo = est1) Or (primo = est2) Or (primo = est3) Or (primo = est4) Or (primo = est5) Then
If (secondo = est1) Or (secondo = est2) Or (secondo = est3) Or (secondo = est4) Or (secondo = est5) Then
resultArray(i) = ritardo '3 = nazionale
Exit For
End If
Else
resultArray(i) = vbNullString
End If
ritardo = ritardo + 1
Next j
Next i
Foglio3.Cells(2, 3).Resize(UBound(resultArray), 1) = resultArray
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.