返回列表 上一主題 發帖

[發問] (已解決)關於陣列

回復 3# freeffly
ReDim brr(1 To 2, 1 To n + 1) 就須要轉置
  1. Private Sub CommandButton1_Click()
  2. Dim arr() As String, brr() As String
  3. s = Range("a1").Value
  4. arr = Split(s, ",")
  5. n = UBound(arr)
  6. ReDim brr(1 To 2, 1 To n + 1)
  7. For i = 1 To n + 1
  8. If Right(arr(i - 1), 3) = "(女)" Then
  9.     brr(1, i) = Left(arr(i - 1), Len(arr(i - 1)) - 3)
  10.     brr(2, i) = "女"
  11.   Else
  12.    brr(1, i) = arr(i - 1)
  13.     brr(2, i) = "女"
  14.   End If
  15. Next
  16. Range("b6").Resize(n, 2) = Application.Transpose(brr)
  17. End Sub
複製代碼

TOP

回復 5# freeffly
Ar( 2 TO 10 ,1 TO 3)    相當於工作表的[A2:C10]範圍的大小位置
第一維元素(2 T0 10 )  相當於工作表的第2列到第10列
第二維元素(1 T0 3 )    相當於工作表的第1欄到第3欄
A(2,1)=[A2],A(2,2)=[B2],A(2,3)=[C2]
A(3,1)=[A3],A(3,2)=[B3],A(3,3)=[C3]
A(4,1)=[A4],A(4,2)=[B3],A(4,3)=[C3]
  1. 'UBound 函數 傳回 Long值,表示指定陣列某維最大可使用的陣列索引。
  2. Sub EX()
  3. Dim Ar()
  4. Ar = [A2:C10].Value '請先自行在[A1:C10]範圍內建立資料
  5. 'UBound(Ar) Ar第一維最大可使用的陣列索引
  6. 'UBound(Ar,2) Ar第二維最大可使用的陣列索引
  7. [E1].Resize(UBound(Ar), UBound(Ar, 2)) = Ar

  8. [K1].Resize(UBound(Ar, 2), UBound(Ar)) = Application.WorksheetFunction.Transpose(Ar)
  9. '使用轉置函數 Application.WorksheetFunction.Transpose

  10. [E11].Resize(1, UBound(Ar, 2)) = Application.Index(Ar, 2)
  11. 'Application.Index(Ar, 2)->AR第一維的第2列

  12. [E13].Resize(UBound(Ar, 2), 1) = Application.Transpose(Application.Index(Ar, 2))
  13. '使用轉置AR第一維的第2列
  14. End Sub
複製代碼
如 Ar = [A1:C10].Value ->Ar(1 To 10, 1 To 3)

TOP

        靜思自在 : 一個人的快樂.不是因為他擁有得多,而是因為他計較得少。
返回列表 上一主題