返回列表 上一主題 發帖

找出特定範圍內未列出的數字

本帖最後由 Andy2483 於 2023-6-17 10:12 編輯

謝謝論壇,謝謝各位前輩

後學藉此帖練習陣列與字典,學習方案如下,請各位前輩指教

執行結果:


Option Explicit
Sub TEST_1()
Dim Brr, i&, j%, y&, x%, V&, u%, R&, C%, A$
Brr = [A1].CurrentRegion: y = UBound(Brr): x = 12
For i = 1 To y
   For j = 1 To x: A = A & "/" & Brr(i, j): Next
   For j = 1 To 24
      If InStr(A & "/", "/" & j & "/") = 0 Then
         C = C + 1: Brr(i, C) = j
      End If
   Next
   A = "": C = 0
Next
[O1].Resize(y, 12) = Brr
End Sub

Sub TEST_2()
Dim Brr, Crr, i&, j%, y&, x%, C%, Z
Set Z = CreateObject("Scripting.Dictionary")
Brr = [A1].CurrentRegion
ReDim Crr(1 To UBound(Brr), 1 To 24)
For i = 1 To UBound(Brr)
   For j = 1 To 24
      If j <= UBound(Brr, 2) Then Z(Brr(i, j)) = 1
      If Z(j) = "" Then: C = C + 1: Crr(i, C) = j
   Next
   Z.RemoveAll: C = 0
Next
[O1].Resize(UBound(Brr), 12) = Crr
End Sub

Sub TEST_3()
Dim Brr, Crr, i&, j%, y&, x%, C%, Z, A%, B%, D%
Set Z = CreateObject("Scripting.Dictionary")
Brr = [A1].CurrentRegion: A = 1
ReDim Crr(1 To UBound(Brr), 1 To 24)
For i = 1 To UBound(Brr)
   For j = 1 To 24
      If j <= UBound(Brr, 2) Then Z(Brr(i, j)) = A
      If Z(j) = B Then: C = C + 1: Crr(i, C) = j: Z(j) = A
   Next
   D = A: A = B: B = D: C = 0
Next
[O1].Resize(UBound(Brr), 12) = Crr
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

本帖最後由 Andy2483 於 2023-11-9 07:13 編輯

回復 8# Andy2483



謝謝論壇,謝謝各位前輩
後學藉此帖練習減少變數的使用,請各位前輩指教

Sub TEST_4()
Dim Brr, i&, j%, C%, Z
Set Z = CreateObject("Scripting.Dictionary")
Brr = [A1].CurrentRegion
For i = 1 To UBound(Brr)
   For j = 1 To 24
      If j <= UBound(Brr, 2) Then Z(Brr(i, j)) = i
      If Z(j) <> i Then: C = C + 1: Brr(i, C) = j
   Next
   C = 0
Next
[O1].Resize(UBound(Brr), 12) = Brr
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 願要大、志要堅、氣要柔、心要細。
返回列表 上一主題