- 帖子
- 2035
- 主題
- 24
- 精華
- 0
- 積分
- 2031
- 點名
- 0
- 作業系統
- Win7
- 軟體版本
- Office2010
- 閱讀權限
- 100
- 性別
- 男
- 註冊時間
- 2012-3-22
- 最後登錄
- 2024-2-1
|
本帖最後由 c_c_lai 於 2016-12-12 19:17 編輯
回復 10# starbox520
沒錯!
使用第二種方法 (ReDim Preserve),雖受限於 Application.Transpose() 255 的限制,
但它能得以動態的增加陣列,是它的優點。但是由於妳現有的案例卻不太適合,是故改採
一次直接宣告陣列大小的第一種方法 (ReDim ar()),而將陣列直接移轉 (Assign) 到工作表單內。
不致受限於 Transpose() 長度的限制。- Sub Ex()
- Dim ln As Variant, ar As Variant
- Dim cts As Integer, ct2 As Integer
-
- With Sheets("Data")
- ln = .[A1].CurrentRegion.Value ' Ln : : Variant/Variant(1 to 177, 1 to 35)
- ' UBound(Ln, 1) = 177 : Long / UBound(Ln, 2) : 35 : Long
- ReDim ar(1 To UBound(ln, 2) + 1, 1 To 2)
- For cts = 1 To UBound(ln, 2) - 5
- ar(cts, 1) = ln(1, cts + 1)
- ar(cts, 2) = ""
- For ct2 = 3 To UBound(ln, 1)
- If ln(ct2, cts + 1) <> 0 Then
- ar(cts, 2) = IIf(ar(cts, 2) = "", ln(ct2, 1) & IIf(ln(ct2, cts + 1) > 0, "+", "") & ln(ct2, cts + 1), _
- ar(cts, 2) & "," & ln(ct2, 1) & IIf(ln(ct2, cts + 1) > 0, "+", "") & ln(ct2, cts + 1))
- End If
- Next ct2
- Next cts
- End With
-
- With Sheets("TEST")
- .[H:I] = ""
- .[H2].Resize(UBound(ar, 1), UBound(ar, 2)) = ar
- End With
- End Sub
複製代碼
scanttt2.rar (31.82 KB)
|
|