返回列表 上一主題 發帖

[發問] 關於字典加陣列欄數問題

[發問] 關於字典加陣列欄數問題

本帖最後由 軒云熊 於 2020-8-16 12:17 編輯

Dim X(1 To 4, 1 To 2) 的 1 TO  4 ,1 To 2
X(B, 2) = X(B, 2) + A(I, 2)  的 2
           X(K, 1) = A(I, 1) 的 1~2
           X(K, 2) = A(I, 2)
[D1].Resize(K, 2) 的 2
請問 如果要讓欄數改成動態該如何寫呢?


javascript:;
  1. Sub 練習字典加陣列累加()

  2.     Dim B, K
  3.     Dim X(1 To 4, 1 To 2)
  4.     Set D = CreateObject("Scripting.Dictionary")
  5.     A = [A1:B1].Resize([B1].End(4).Row)

  6.     For I = 1 To UBound(A)
  7.    
  8.         If D.Exists(A(I, 1)) Then
  9.            B = D(A(I, 1))
  10.            X(B, 2) = X(B, 2) + A(I, 2)
  11.         Else
  12.            K = K + 1
  13.            D(A(I, 1)) = K
  14.            X(K, 1) = A(I, 1)
  15.            X(K, 2) = A(I, 2)
  16.         End If

  17.     Next I

  18.     [D1].Resize(K, 2) = X

  19. End Sub
複製代碼

練習.rar (11.33 KB)

本帖最後由 軒云熊 於 2020-8-16 12:26 編輯

Dim X(1 To 4, 1 To 2) 的 1 TO  4 ,1 To 2 列數 跟 欄數 還是說 直接給一個 較大的空間呢?

TOP

本帖最後由 軒云熊 於 2020-8-16 18:06 編輯

後來想到的辦法是這樣但 迴圈變多了.... XD 要縮減迴圈對我來說實在太困難了....還有一大段距離...
  1. Sub 練習字典加陣列累加()

  2.     Dim D As Object, B&, K&
  3.    
  4.     Set D = CreateObject("Scripting.Dictionary")
  5.     A = Range(Cells(1, 1).End(4), Cells(1, 1).End(2))
  6.     T = Cells(1, 1).End(4).Row
  7.     L = Cells(1, 1).End(2).Column
  8.     ReDim X(1 To T, 1 To L)

  9.     For I = 1 To UBound(A)
  10.         E = A(I, 1)
  11.         If D.Exists(E) Then
  12.            B = D(E)
  13.             For F = 2 To UBound(X, 2)
  14.                 If Not IsNumeric(A(I, F)) Then
  15.                     X(B, F) = X(B, F)
  16.                 Else
  17.                     X(B, F) = X(B, F) + A(I, F)
  18.                 End If
  19.             Next F
  20.         Else
  21.            K = K + 1
  22.            D(E) = K
  23.             For Y = 1 To UBound(X, 2)
  24.                 X(K, Y) = A(I, Y)
  25.             Next Y
  26.         End If
  27.     Next I
  28.    
  29.     Cells(1, L + 2).Resize(K, Y - 1) = ""
  30.     Cells(1, L + 2).Resize(K, Y - 1) = X

  31. End Sub
複製代碼
javascript:;

練習.rar (12.91 KB)

TOP

        靜思自在 : 受人點水之恩,須當湧泉以報。
返回列表 上一主題