2012-05-08 81 views
1

我正在研究用於工作的解析器。基本上我有一個excel文檔,裏面充滿了我需要解析並存儲到多維數組中的數據行。多維數組存儲/打印問題

這裏是我的代碼至今:

Dim a 
Dim iRows As Long 
Dim i As Integer 
Dim aArray() As Variant 

a = Array(2,3,4,5,6,9,10,14,19,21,23,25,29,38) 
iRows = ActiveWorkbook.Sheets(1).UsedRange.Rows.Count 
ReDim aArray(iRows, UBound(a)) 

For i = 2 To iRows + 1 
    For x = 0 To UBound(a) 
     aArray(i - 2, x) = ActiveSheet.Cells(i, a(i - 2)).Value 
    Next x 
Next i 

牢記i = 2的偏移和iRows + 1是忽略標題行

的問題是,當我嘗試輸出它,我我發現所有的行都是相同的,所以aArray(0,1)aArray(1,1)是相同的值,它們應該是不同行的Excel文件中的不同值。

還應該有14列,我每行存儲,但是當我嘗試輸出的歷史位置9的任何值基於小陣我在我得到一個超出範圍的錯誤,像這樣

ActiveSheet.Cells(1, 1).Value = aArray(10, 0) 
ActiveSheet.Cells(1, 2).Value = aArray(11, 0) 

用於指定要在主陣列中存儲哪些值,它們應該是每個包含在aArray中的子陣列的總共14個位置。

任何見解?

請記住,這是我的第一個真正的VBA腳本,所以如果我犯了錯誤,請讓我的患者來自JS/PHP背景,所以這對我來說有很大的不同。

回答

0

您切換aArray中的尺寸。在代碼中,你使用(count_of_rows_in_usedRang,count_of_elements_in_a)填充aArray,我想象使用的響度只有9行,所以aArray(10,0)超出範圍,而aArray(0,10)不適用。

我認爲在問題的第一部分輸出可能有類似的問題。如果沒有,請發佈,excel表格中的內容以及結果。

+0

要命了很多幫助THKS – midaym

+0

我結束了不得不切換前兩個值和下一次出現的i - 2在輸出需要x像這樣aArray(x,i - 2)= ActiveSheet.Cells(i,a(x))。價值完美現在完美 – midaym

0

如果您只是簡單地從工作表中讀取數據,忽略標題,那麼您就過於複雜了。像這樣將工作:

Const intOffsetRow As Integer = 2 

Dim rngUsedRange As Range 
Dim varWksArray As Variant 

Set rngUsedRange = ActiveWorkbook.Sheets(1).UsedRange 

With rngUsedRange 
    varWksArray = .Range(Cells(intOffsetRow, 1), Cells(.Rows.Count, .Columns.Count)).Value 
End With 

Set rngUsedRange = Nothing 

如果你不介意有是一個空白/空行/數組中的尺寸,它甚至可以進一步簡化:

Const intOffsetRow As Integer = 1 

Dim rngUsedRange As Range 
Dim varWksArray As Variant 

Set rngUsedRange = ActiveWorkbook.Sheets(1).UsedRange 

varWksArray = rngUsedRange.Offset(intOffsetRow, 0).Value 

Set rngUsedRange = Nothing 
+0

他想複製整個範圍,重新排列它的一些細胞。可能有更好的方法來做到這一點 - 我認爲他在保持簡單和多功能方面做得很好(如果需要其他行,或者需要以其他順序更改,可以更改a())。 – Johanness