標題:
[發問]
(已解決)關於陣列
[打印本頁]
作者:
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) 就須要轉置
Private Sub CommandButton1_Click()
Dim arr() As String, brr() As String
s = Range("a1").Value
arr = Split(s, ",")
n = UBound(arr)
ReDim brr(1 To 2, 1 To n + 1)
For i = 1 To n + 1
If Right(arr(i - 1), 3) = "(女)" Then
brr(1, i) = Left(arr(i - 1), Len(arr(i - 1)) - 3)
brr(2, i) = "女"
Else
brr(1, i) = arr(i - 1)
brr(2, i) = "女"
End If
Next
Range("b6").Resize(n, 2) = Application.Transpose(brr)
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]
'UBound 函數 傳回 Long值,表示指定陣列某維最大可使用的陣列索引。
Sub EX()
Dim Ar()
Ar = [A2:C10].Value '請先自行在[A1:C10]範圍內建立資料
'UBound(Ar) Ar第一維最大可使用的陣列索引
'UBound(Ar,2) Ar第二維最大可使用的陣列索引
[E1].Resize(UBound(Ar), UBound(Ar, 2)) = Ar
[K1].Resize(UBound(Ar, 2), UBound(Ar)) = Application.WorksheetFunction.Transpose(Ar)
'使用轉置函數 Application.WorksheetFunction.Transpose
[E11].Resize(1, UBound(Ar, 2)) = Application.Index(Ar, 2)
'Application.Index(Ar, 2)->AR第一維的第2列
[E13].Resize(UBound(Ar, 2), 1) = Application.Transpose(Application.Index(Ar, 2))
'使用轉置AR第一維的第2列
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/)