2012-05-08 12 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 = 2iRows + 1のオフセットに注意してくださいヘッダー行を無視することである

問題は、私は、出力それにしようとするとことを私でありますaArray(0,1)aArray(1,1)は同じ値であり、Excelファイルの異なる行とは異なる値にする必要があります。

さらに私は行ごとに記憶していますが、私は位置9過去の出力に任意の値をしようとすると、私は私は小さいアレイに基づくので

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

ように距離誤差のアウトを取得する14個の列があるはずメイン配列に格納する値を指定するために使用すると、aArray内に含まれる各サブ配列の合計14個の位置にする必要があります。

洞察?

私はミスが私の患者を持っていてください作っていますので、もしこれが私の最初の本当のVBAスクリプトであることに留意してください私はこれが私のために多くの異なるJS/PHPの背景から来るメートル。

答えて

0

aArrayで寸法を切り替えました。コードでは、(count_of_rows_in_usedRang、count_of_elements_in_a)でaArrayを補間して塗りつぶして、使用したrangが9行であると考えているので、aArray(10、0)は範囲外です。

質問の最初の部分の出力に同様の問題があると思います。そうでない場合:投稿してください、何がExcelシートにあり、結果として何を得ましたか。

+0

awsomeさんは – midaym

+0

thksたくさん助けましたya iは最初の2つの値を切り替える必要があり、次の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

彼は全体の範囲をコピーし、その中のいくつかのセルを再配置したいと考えています。おそらくこれを行うには良い方法があります - (あなたが他の行が必要な場合や、別の順序でそれらを必要とする場合だけ(変更))私は彼がシンプルで汎用性の高い、それを維持する良い仕事をしたと思います。 – Johanness

関連する問題