2021年7月20日 星期二

VBA:排列組合遊戲

 最近在用VBA排列組合一些數字,做4組數字排列組合的生成,那為何不往5組或更多數字呢!!

因為超過4組數字的1~39高達百萬,要用不同方法堆壘資料阿......

架構:先產生1~39的數字>轉換為陣列>透過迴圈組合數字>檢查有無重複>回寫EXCEL A行

插曲:為確保格式,有透過FORMAT做數字格式指定,以利檢查。

其他閒話:本來是要寫539樂透彩組合的,哈


圖1.合計4.4萬筆資料

Sub 排列組合不重複()
For i = 1 To 39 Step 1
If ARR = "" Then
ARR = i
Else
ARR = ARR & "," & i
End If
Next i
ARR = Split(ARR, ",")
Set d = CreateObject("scripting.dictionary")
For i = LBound(ARR) To UBound(ARR):
For J = LBound(ARR) To UBound(ARR):
For K = LBound(ARR) To UBound(ARR):
OUT = Format(ARR(i), "0#") & Format(ARR(J), "0#") & Format(ARR(K), "0#")
If Rept_CHECK(OUT, 2) = False Then d(ARR(i) & ARR(J) & ARR(K)) = ""
Next:
Next:
Next
[a1].Resize(d.Count, 1).NumberFormatLocal = "@"
[a1].Resize(d.Count, 1) = Application.Transpose(d.keys)
End Sub
Function Rept_CHECK(SOURCE_str, LEN_STR) As Boolean
Rept_CHECK = False
For i = 1 To Len(SOURCE_str) - 1
For J = i + 1 To Len(SOURCE_str)
If Mid(SOURCE_str, i, LEN_STR) = Mid(SOURCE_str, J, LEN_STR) Then
Rept_CHECK = True
Exit For
End If
Next
Next
End Function
view raw gistfile1.txt hosted with ❤ by GitHub

沒有留言:

張貼留言

指數變化(2025.03.28)

 指數變化(2025.03.28) 上周焦點: 美國消費者信心指數 3/25 92.9 美國耐久財訂單月增率 3/26 1.4 PCE 月增 0.4 年增 2.8 (不多阿,最高還有5.5ㄝ)   本周愛看: 美國非農業就業人數變化 美國ISM製造業採購經理人指數 美國芝加哥FE...