22

多次元配列の行全体の値を VBA の 1 次元配列に返す方法はありますか?

のようなもの は、配列の行 3 を一度arr_1dim = arr_2dim(3,:)に割り当てるための matlab 式です。arr_2dimarr_1dim

Excel VBAで同様の安価な方法はありますか?

4

5 に答える 5

14

行または列を取得するためのVBA関数はありません。自分で書くか、ここを見てください:
http ://www.cpearson.com/excel/vbaarrays.htm

于 2013-01-05T17:12:47.480 に答える
4

これは、多次元配列の 1 つの次元を簡単に出力するために行うことです。

基本的に、新しい 1D 配列を定義し、より大きな配列の値を詰め込みます。

例 (3D から 1D から印刷物へ):

Sub PrintItOut()
     ReDim big_array(10,5,n) as Variant, small_array(n) as Variant

     'use multidimensional array


     'place multi-dimensional values into the 1D array

     For i = 0 to n
            small_array(i) = big_array(0, 0, i)
     Next

     Range(Cells(1, 1), Cells(1, n + 1)) = small_array
End Sub

それが私のやり方です。これを読んでいる人なら誰でも理解できると思います。とても簡単な方法だと思います。

于 2013-07-20T18:15:04.140 に答える
1

Matlabは、行列、配列、ベクトルに関しては非常に優れたアプリケーションです...;)しかし、Excelはそれほど悪くはなく、行列ベースでもあります。

したがって、ループしたくないと仮定します。関数を使用して、単にmulti-D arrayワークシートに出力することができTransposeます。

Row次に、を使用して、を希望の範囲サイズの配列にプルしますTranspose

Dim vArr as Variant

'--output multi-D array into worksheet
Sheets(2).Range("E2").Resize(UBound(multiDArray) + 1, _
UBound(Application.Transpose(multiDArray))) = multiDArray

'--pull back the row you need: we double transpose here to get 1D. Coz single transpose
'-- results in 2D array..
vArr = WorksheetFunctions.Transpose( _ 
       WorksheetFunctions.Transpose(Sheets(1).Range("A2:G2").Value)) 

完全に動的にするために、マルチDを使用して動的な行数を使用することができresizeます:)range A2:G2array row upperbound

于 2013-01-05T19:16:05.503 に答える