|
本帖最后由 ccc919 于 2017-8-7 14:34 编辑
- '=================================起始===============================
- ar = Sheet3.Range("d5:d" & Sheet3.[a65536].End(3).Row)
- For i = 1 To UBound(ar)
- If ar(i, 1) Like "*Φ*×*" Then
- a = Split(ar(i, 1), "Φ")(1)
- b = Split(a, "×")
- c1 = Val(b(0))
- c2 = Val(b(1))
- c3 = Val(b(2))
- '============================计算工作量===================
- ar1 = Sheet1.Range("o5:o" & Sheet1.[a65536].End(3).Row)
- ar2 = Sheet1.Range("p5:p" & Sheet1.[a65536].End(3).Row)
- ar3 = Sheet1.Range("q5:q" & Sheet1.[a65536].End(3).Row)
- ar4 = Sheet1.Range("r5:r" & Sheet1.[a65536].End(3).Row)
- ar5 = Sheet1.Range("s5:s" & Sheet1.[a65536].End(3).Row)
- ar6 = Sheet1.Range("t5:t" & Sheet1.[a65536].End(3).Row)
- ar7 = Sheet1.Range("u5:u" & Sheet1.[a65536].End(3).Row)
- ar8 = Sheet1.Range("v5:v" & Sheet1.[a65536].End(3).Row)
- For ii = 1 To UBound(ar1)
- For iii = 1 To UBound(ar2)
- For iiii = 1 To UBound(ar3)
- For iiiii = 1 To UBound(ar4)
- For iiiiii = 1 To UBound(ar5)
- For iiiiiii = 1 To UBound(ar6)
- For iiiiiiii = 1 To UBound(ar7)
- If c3 >= 0 And c3 < 65535 Then
- ar(i, 1) = Format(((3.14 * (c1 / 1000)) * ar1(i, 1)) + (2 * ar2(i, 1)) + (3.14 * (c1 / 1000) * (0.5 * ar3(i, 1))) + (2 * ar4(i, 1)) + (3 * ar5(i, 1)) + (1.5 * ar6(i, 1)) + (1.5 * ar7(i, 1)) + (1 * ar8(i, 1)), "0.00")
- Else
- ar(i, 1) = ""
- End If
- Next
- Next
- Next
- Next
- Next
- Next
- Next
- '============================================================
- Else
- ar(i, 1) = ""
- End If
- Next
- Sheet3.Range("o5").Resize(UBound(ar), 1) = ar
复制代码
求各位帮忙优化FOR循环,谢谢
本帖最后由 大灰狼1976 于 2017-8-7 16:02 编辑
至少简化成这样估计运行也没有问题。
- '=================================起始===============================
- ar = Sheet3.Range("d5:d" & Sheet3.[a65536].End(3).Row)
- ar1 = Sheet1.Range("o5:v" & Sheet1.[a65536].End(3).Row)
- For i = 1 To UBound(ar)
- If ar(i, 1) Like "*Φ*×*" Then
- a = Split(ar(i, 1), "Φ")(1)
- b = Split(a, "×")
- c1 = Val(b(0))
- c2 = Val(b(1))
- c3 = Val(b(2))
- '============================计算工作量===================
- If c3 >= 0 And c3 < 65535 Then
- ar(i, 1) = Format(((3.14 * (c1 / 1000)) * ar1(i, 1)) + (2 * ar1(i, 2)) + (3.14 * (c1 / 1000) * (0.5 * ar1(i, 3))) + (2 * ar1(i, 4)) + (3 * ar1(i, 5)) + (1.5 * ar1(i, 6)) + (1.5 * ar1(i, 7)) + (1 * ar1(i, 8)), "0.00")
- Else
- ar(i, 1) = ""
- End If
- '============================================================
- Else
- ar(i, 1) = ""
- End If
- Next
- Sheet3.Range("o5").Resize(UBound(ar), 1) = ar
复制代码
|
|