標題:
矩陣合併
[打印本頁]
作者:
acdx
時間:
2012-12-28 16:45
標題:
矩陣合併
我有數個矩陣
Ex:
HdB(12,1)
MdB(12,1)...共有8個 該如何將他們組合成一個12*8的矩陣?
新矩陣A(12,8)
作者:
stillfish00
時間:
2013-1-2 16:25
本帖最後由 stillfish00 於 2013-1-2 16:27 編輯
回復
1#
acdx
好像沒什麼簡便方法 , 假設你的array下限都為1
1.直接提取元素
Dim ar, i
ReDim ar(1 To 12, 1 To 8)
For i = 1 To 12
ar(i, 1) = HdB(i, 1)
ar(i, 2) = MdB(i, 1)
'ar(i, 3) = ....
'....
'ar(i, 8) = ....
Next i
複製代碼
2.利用工作表(感覺挺浪費)
Dim ar
With Workbooks.Add
With .Sheets(1)
.[A1].Resize(12) = HdB
.[A1].Resize(12).Offset(, 1) = MdB
'.[A1].Resize(12).Offset(, 2) = ...
'...
'.[A1].Resize(12).Offset(, 7) = ...
ar = .[A1].Resize(12, 8)
End With
.Close savechanges:=False
End With
複製代碼
3. 改用Evaluate/Join (陣列元素不含逗號或分號字元時才可用)
Dim ar
ar = Application.Transpose(Evaluate("{" & _
Join(Application.Transpose(HdB), ",") & ";" & _
Join(Application.Transpose(MdB), ",") & _
"}"))
複製代碼
作者:
Hsieh
時間:
2013-1-3 00:30
回復
1#
acdx
以四陣列為例
Sub ex()
Dim AHW(12), BHW(12), CHW(12), DHW(12), TAry, MyAry()
For i = 0 To 11 '寫入4個一維陣列的值
AHW(i) = Int((100 * Rnd) + 1)
BHW(i) = Int((100 * Rnd) + 1)
CHW(i) = Int((100 * Rnd) + 1)
DHW(i) = Int((100 * Rnd) + 1)
Next
TAry = Array(AHW, BHW, CHW, DHW) '合併四個一維陣列
MyAry = Application.Transpose(Application.Transpose(TAry)) '將一維陣列轉成正確二維陣列
[A1].Resize(4, 12) = MyAry '將二維陣列寫入工作表
For i = 1 To 4
For j = 1 To 12
MsgBox MyAry(i, j) '取出二維陣列的值
Next
Next
End Sub
複製代碼
作者:
stillfish00
時間:
2013-1-3 09:50
回復
3#
Hsieh
還是版主的方法簡潔 ,
原來第10行transpose兩次還有這種效果:
一維陣列的一維陣列(Arr(m)(n))轉二維(Arr(m,n))
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)