Board logo

標題: [發問] (已解決)關於陣列 [打印本頁]

作者: freeffly    時間: 2011-5-10 08:28     標題: (已解決)關於陣列

本帖最後由 freeffly 於 2012-2-22 17:02 編輯

請問為何我欄的陣列可以出現我要的結果
可是行的陣列不行?
我的方法不對嗎?
[attach]6092[/attach]
作者: chin15    時間: 2011-5-10 08:40

ActiveCell.Resize(1, 5) = Array("AA01", "AA02", "AA05", "AA07", "AA08")
    ActiveCell.Resize(5, 1) = Application.Transpose(Array("AA01", "AA02", "AA05", "AA07", "AA08"))
你的陣列是一維橫向陣列
要放在直向儲存格區域必須要轉置
作者: freeffly    時間: 2011-5-10 12:41

回復 2# chin15


    那為什麼附加檔的這各例子可以不用轉置?
[attach]6097[/attach]
作者: GBKEE    時間: 2011-5-10 13:35

回復 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
複製代碼

作者: freeffly    時間: 2011-5-10 17:41

回復 4# GBKEE


    那一句是轉置的功能喔
     因為這各東西是朋友給我的
     我還看不太懂要問他為什麼陣列結果跟我不一樣
     沒空回答我
      
      所以陣列用在行的部份就要轉置才能得到結果囉
作者: GBKEE    時間: 2011-5-10 20:24

回復 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)
作者: freeffly    時間: 2011-5-11 08:28

回復 6# GBKEE


    謝謝大大花這麼多時間回覆
     先收下來研究一下




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)