返回列表 上一主題 發帖

[發問] Array矩陣,如何取出AR(1)裡的第5個值等等

[發問] Array矩陣,如何取出AR(1)裡的第5個值等等

請教大大:
個人在練習矩陣用法
Sub Transpose2()
    Dim AR()
    ReDim Preserve AR(k)
        AR(k) = Sheets("test1").Range(Cells(1, 1), Cells(10, 1)).Value
        AR(0) = Sheets("test1").Range(Cells(1, 1), Cells(10, 1)).Value
        k = k + 1
        ReDim Preserve AR(k)
        AR(1) = Sheets("test1").Range(Cells(1, 2), Cells(10, 2)).Value
        k = k + 1
        ReDim Preserve AR(k)
        AR(2) = Sheets("test1").Range(Cells(1, 3), Cells(10, 3)).Value
        k = k + 1
        ReDim Preserve AR(k)
     With Sheets("test1")
        AR = Application.Transpose(Application.Transpose(AR))    此句error   why?

        .Cells(1, 10).Resize(UBound(AR(0))) = AR(0)
        .Cells(1, 11).Resize(UBound(AR(1))) = AR(1)
        .Cells(1, 12).Resize(UBound(AR(2))) = AR(2)
        .Cells(1, 13).Resize(UBound(AR(3))) = AR(3)
    End With
End Sub
請教大大
        又如何取出AR(1)裡的第5個值
       又如何取出AR(2)裡的第6個值等等??

回復 1# yangjie

你寫的語法和架構都不對!
程式也不用這樣落落長!
  1. Sub Transpose2()
  2. AR = Sheets("test1").Range(Cells(1, 1), Cells(10, 3)).Value'下面註解的部份是你原有的程式,只要這一列就可以完成
  3.         'AR(k) = Sheets("test1").Range(Cells(1, 1), Cells(10, 1)).Value
  4.         'AR(0) = Sheets("test1").Range(Cells(1, 1), Cells(10, 1)).Value
  5.         'k = k + 1
  6.         'ReDim Preserve AR(k)
  7.         'AR(1) = Sheets("test1").Range(Cells(1, 2), Cells(10, 2)).Value
  8.        ' k = k + 1
  9.         'ReDim Preserve AR(k)
  10.         'AR(2) = Sheets("test1").Range(Cells(1, 3), Cells(10, 3)).Value


  11. Cells(1, 10).Resize(3, UBound(AR, 1)) = ""     '清除
  12. Cells(5, 10).Resize(UBound(AR, 1), 3) = ""'   '清除
  13. Cells(1, 10).Resize(3, UBound(AR, 1)) = Application.Transpose(AR)'這列是從J1欄到S3,往橫的方向貼上
  14. Cells(5, 10).Resize(UBound(AR, 1), 3) = AR'這列是從J5到L14和原來的方向一樣
  15. End Sub
複製代碼

TOP

回復 1# yangjie
如下圖顯示
   

TOP

回復 1# yangjie

再貼一張解釋給你
   

TOP

回復 3# lpk187
謝謝lpk187
AR = Sheets("test1").Range(Cells(1, 1), Cells(10, 3)).Value
Cells(5, 10).Resize(UBound(AR, 1), 3) = "" '   '清除
Cells(5, 10).Resize(UBound(AR, 1), 3) = AR
if ......
     若整個判讀之後下,
     需要在cells(5,15)下寫入B欄之值
endif
    應如何寫語法

TOP

本帖最後由 lpk187 於 2015-6-12 14:53 編輯

回復 5# yangjie


    ar = Sheets("test1").Range(Cells(1, 1), Cells(10, 3)).Value '讀取A1到C10
For N = 1 To 10
    If .....then
          Cells(5 , 15) = ar(N, 2) '這裡的 ar(N, 2)是指B欄的第N列
   end if
Next

TOP

回復 6# lpk187

謝謝

TOP

回復 5# yangjie

其實不要把陣列認為很複雜,以儲存格來說陣列,儲存格就是一個2維陣列,所以當我們把範圍設成陣列時也是一個2維陣列
例如 ar(列,欄)
但假若只是有1維陣列
就不能直接用像ar=range("A1:C10")這種方式去讀取
方式如下:
讀到一維陣列
Dim ar(1 to 10)
for N=1 to 10
    ar(N)=cells(N,1)
next
...
寫入到儲存格
for x=1 to 10
cells(x,10)=ar(X)
next

TOP

回復 8# lpk187
謝謝指導

TOP

        靜思自在 : 唯其尊重自己的人,才更勇於縮小自己。
返回列表 上一主題