回圈判斷并輸出資料,用陣列定義元素導致重啟,愁
代碼如下,:
Sub honcs201()
Dim arr(1 To 400000, 1 To 800)
For sct = 1 To 12
For t1 = 1 To 20
For t2 = t1 + 1 To 21
For t3 = t2 + 1 To 22
For t4 = t3 + 1 To 23
For t5 = t4 + 1 To 24
For t6 = t5 + 1 To 25
For t7 = t6 + 1 To 26
For t8 = t7 + 1 To 27
For t9 = t8 + 1 To 28
For t10 = t9 + 1 To 29
For t11 = t10 + 1 To 30
For t12 = t11 + 1 To 31
ts = IIf(t1 Mod 2 = 1, 1, 0) + IIf(t2 Mod 2 = 1, 1, 0) + IIf(t3 Mod 2 = 1, 1, 0) + IIf(t4 Mod 2 = 1, 1, 0) + IIf(t5 Mod 2 = 1, 1, 0) + IIf(t6 Mod 2 = 1, 1, 0) + IIf(t7 Mod 2 = 1, 1, 0) + IIf(t8 Mod 2 = 1, 1, 0) + IIf(t9 Mod 2 = 1, 1, 0) + IIf(t10 Mod 2 = 1, 1, 0) + IIf(t11 Mod 2 = 1, 1, 0) + IIf(t12 Mod 2 = 1, 1, 0)
If ts = sct Then
h = h + 1
arr(h, 1) = t1
arr(h, 2) = t2
arr(h, 3) = t3
arr(h, 4) = t4
arr(h, 5) = t5
arr(h, 6) = t6
arr(h, 7) = t7
arr(h, 8) = t8
arr(h, 9) = t9
arr(h, 10) = t10
arr(h, 11) = t11
arr(h, 12) = t12
End If
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Range("a1").Resize(100, 972).Value = arr
Range("al2") = Format(Timer - Timer1, "00:00.0000")
End Sub
uj5u.com熱心網友回復:
把邏輯重新設計一下,看能否簡化。
uj5u.com熱心網友回復:
先輸出到.csv(半角逗號間隔列,回車換行間隔行的純文本格式)再在Excel里面讀。
uj5u.com熱心網友回復:
31選12 有141120525種組合,樓主想干什么uj5u.com熱心網友回復:
13層for回圈,里面還有那么多的iif()函式。狂汗……
uj5u.com熱心網友回復:
Dim arr(1 To 400000, 1 To 800)請問你的excel是什么版本?2003版的不能滿足你的要求
另外 代碼思路應該有優化的
uj5u.com熱心網友回復:
Dim arr(1 To 400000, 1 To 800)
'成員資料型別為 Variant,長度 16 位元組。'
'占用記憶體 400000# * 800 * 16 ≈ 4.8G'
'32位程式沒有這么多記憶體!'
Dim arr(1 To 400000, 1 To 800) As Byte
'成員取值最大為 31,用 Byte 足夠了,長度 1 位元組。'
'占用記憶體 400000& * 800 * 1 ≈ 305M'
'應該可以了。'
uj5u.com熱心網友回復:
EXCEL占用記憶體不能占用太多。。。程式運行時間也不能太長。。。本人深有體會。。。。如果必須要占用太多記憶體且運行時間長,請嘗試加入斷點或者msgbox,讓程式在未死掉之前停頓一下再繼續。否則 請用其他語言比如VB/VC神馬的 進行處理。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/116757.html
標籤:VBA
上一篇:求大神幫忙。(模擬考試系統)
下一篇:請教VB字串允許的最大長度問題!
