Option Explicit
Sub TEST()
Dim Brr, Crr, Q, i&
'↑宣告變數
Brr = Range([A2], [A65536].End(3))
'↑令Brr變數是帶入儲存格值的二維陣列
ReDim Crr(UBound(Brr), 1 To 3)
'↑宣告Crr變數是 二維空陣列,縱向索引號從 0 到 Brr陣列最大索引列號,
'UBound(Brr) 同 0 To UBound(Brr) ,0 To 可以省略
'橫向索引欄號從 1 到 3
Q = [{"t","W","L"}]
'↑令Q變數是一維陣列,Q(1)="t",Q(2)="W",Q(3)="L"
'=[{~}]這樣方式的一維陣列沒有0索引號
'Q = Array("t", "W", "L"):這樣方式的一維陣列有0索引號
Crr(0, 1) = Q(1): Crr(0, 2) = Q(2): Crr(0, 3) = Q(3)
'↑此Crr陣列0索引號列是用來放標題列,這樣的方式較不會影響迴圈的設計,
'迴圈數 源頭陣列資料對齊同一個 迴圈數 結果陣列資料
For i = 1 To UBound(Brr)
'↑設順迴圈將資料寫入結果陣列裡
If Not Brr(i, 1) Like "*t#*W#*L#*" Then GoTo i01
Crr(i, 1) = Val(Split(Brr(i, 1), Q(1))(1))
Crr(i, 2) = Val(Split(Brr(i, 1), Q(2))(1))
Crr(i, 3) = Val(Split(Brr(i, 1), Q(3))(1))
i01: Next
[F1].Resize(UBound(Crr) + 1, 3) = Crr
'↑令結果陣列寫入儲存格裡,
'UBound(Crr) + 1 ,這+1的原因是Resize()擴展縱向橫向儲存格範圍,照習慣是同陣列最大索引號範圍,
'但是Crr陣列有0索引號,且UBound(Crr)是Crr陣列最大索引列號,所以必須+1 :
'貼入儲存格的方式是以陣列的最左上角資料開始向下/向右所需範圍貼入儲存格,
'最左上角陣列開始索引號是(1,1),就從 (1,1)陣列的最左上角資料開始下/右寫入
'最左上角陣列開始索引號是(0,1),就從 (0,1)陣列的最左上角資料開始下/右寫入
'所以Crr陣列有0索引列號,就必須以陣列最大列號+1的儲存格範圍寫入儲存格中,才會完整
End Sub
PS:陣列裡有沒有(0,0) (1,0) (0,1)這些索引號,全憑其宣告
1.ReDim Crr(100,100) 同 ReDim Crr(0 To 100,0 To 100) ,索引號是從0開始,
如果所想要的開始索引號縱向橫向都要從1開始,就必須ReDim Crr(1 To 100,1 To 100)