返回列表 上一主題 發帖

Array 陣列應用

這個不是解決過了嗎?怎麼又來一次?

TOP

那麼應該是你傳錯文件了。
你的文件中並沒有你說的
1. Customer 資料有兩筆       (大約需放大至100筆)
    2. 狀態 資料有三筆
    3. AB欄是我展開後所需要的結果

TOP

陣列的意義在於把資料存取置於記憶體中運算,運算完後再一次寫入工作表上,主要是縮短操作時間,程式碼不一定能精簡。
你的須求可以這樣:
  1. Private Sub CommandButton1_Click()
  2. Dim a, b, arr(), i%, j%, m%
  3. a = [e3:e5]
  4. b = [d3:d4]
  5. For i = 1 To UBound(b)
  6. For j = 1 To UBound(a)
  7. m = m + 1
  8. ReDim Preserve arr(1 To 2, 1 To m)
  9. arr(1, m) = a(j, 1)
  10. arr(2, m) = b(i, 1)
  11. Next j, i
  12. [a3].Resize(m, 2) = Application.Transpose(arr)
  13. End Sub
複製代碼

TOP

03.a = [e3:e5]

04.b = [d3:d4]
改這兩行
a=range([e3],[e3].end(4))
b=range([d3],[d3].end(4))

TOP

dim i% = dim i as integer
把游標定在redim上按f1,看說明。
要學vba首先學如何看說明。

TOP

ReDim Preserve arr(1 To 2, 1 To m)
在迴圈內重新宣告陣列的大小。
假設不能預知程式運行的結果須要的陣列大小(雖然可以先算出來,但用動態陣列就不用)
每一次的迴圈m=m+1,所以這個陣列是不斷的長大的,必須要注意陣列只能改變最後一維的大小,這裡就是指第二維。所以最後要把這個陣列轉置寫入工作表中。

TOP

        靜思自在 : 得理要饒人,理直要氣和。
返回列表 上一主題