目次
配列とは、同じ種類のデータを保持する変数のことです。 データが1行または1列しかない場合は1次元配列と呼ばれますが、複数の行と列がある場合は2次元配列と呼ばれます。 ここでは ReDim を使用して、VBAで配列のサイズを変更することができます。 さらに、この方法では プリザーブ キーワードと ReDim 古いデータをそのまま残すために、この記事で紹介するのは 2 のクイックメソッド" リディムプリザーブ " a 2次元配列 において エクセルブイビーエー .
練習用ワークブックをダウンロードする
マクロでReDim Preserve 2D.xlsm
Excel VBAで2次元配列をReDimする2つの便利な方法
から作成したベースデータセットです。 2次元配列 まず、3 行 2 列の配列を作成します。 そして、この配列にもう 1 列追加します。 このとき、" リディムプリザーブ 「さらに、これを使わないとどうなるかをデモします。
デフォルトでは、配列の最後の次元(つまり、列や上限)しかサイズ変更できません。 ここでは、配列を転置してから最後の次元を変更し、もう一度転置して、配列の両方の次元をサイズ変更することにします。 2次元配列 をExcel VBAで作成します。
1.2次元配列の最終次元を保持するReDim
まず、以下のように定義します。 2次元配列 をダイナミックとする。 ReDim ステートメントで、3行2列の配列を作成します。 最後に ReDim ステートメントを再度 プリザーブ キーワード を使用して、2次元配列の上限値を増加させます。
ステップス
- はじめに を押してください。 ALT+F11 を表示させることができます。 VBAモジュール ウィンドウで行います。 デベロッパー タブ → 選択 ビジュアルベーシック .
- では、その中から インサート タブ → 選択 モジュール ここにVBAのコードを打ち込みます。
- 次に、次のコードを モジュール ウィンドウに表示されます。
Sub Redim_Preserve_2D_Array_Row() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "レイチェル" Our_Array(2, 1) = "ロス" Our_Array(3, 1) = "ジョーイ" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 Range("C6:D8").Value = Our_Array End Sub
VBAのコードブレイクダウン
- まず サブプロシジャ " Redim_Preserve_2D_Array_Row ".
- 次に、変数 私たちの配列 を動的配列とする。
- 次に,配列のサイズを定義する. 下限値は 3 であり、上限は 2 であり、どちらもスタートは 1 .
- そして、配列に値を代入する。
- その後、値を入力し C6:D8 セルレンジ
- その後、コードを実行します。
- だから セーブ その モジュール を押してください。 実行 .
- その結果、定義されたセル範囲に値が返されます。 このことから、" レイチェル 「は行に 1 および列 1 の位置と定義された( 1,1 ) をVBAコードに追加してください。
- では、配列のサイズを変更します。
- そこで、先ほどのコードにこれを追加し、最初の Range.Valueステートメント さらに、このコードがどのように見えるかは、以下のスナップショットで見ることができます。
ReDim Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Range("C6:E8").Value = Our_Array
- ここでは、上限を( 1 への 2 ) から ( 1 への 3 )による 1 .
- そして、配列に値を追加しています。
- このコードを実行すると、以前の値が保存されていないことがわかります。 以前の値に対して空白が返されます。
- さて、これを解決するために Preserve キーワード に入っています。 ReDimステートメント .
- 最後に、私たちの完全なコードはこうなります。
Option Explicit Sub Redim_Preserve_2D_Array_Row() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 ReDim Preserve Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Range("C6:E8").Value = 2.5 5VOur_Array End Sub
- さて、もし私たちが 実行 を実行すると、このような出力になります。 このように、" リディムプリザーブ " の最後の次元になります。 2次元配列 をExcel VBAで作成する方法です。 さて、次の方法では、" リディムプリザーブ " と入力し、配列の両次元をリサイズします。
続きを読む Excelで列から配列に一意な値を取得するVBA(3つの基準)
類似の読み物
- Excelでテーブルの配列に名前を付ける方法(簡単な手順付き)
- CSVファイルを配列に読み込むExcel VBA(理想的な4つの例)
- Excel VBAで範囲を配列に変換する方法(3つの方法)
- Excel VBA: 配列から重複を取り除く(2例)
2.ReDim Preserve Both Dimensions 2D Array in Excel VBA
最後の方法では、サイズを変更する手順と" リディムプリザーブ " は 2次元配列 ここでは VBA トランスポーズ 関数で配列の下限のサイズを変更しようとした場合、最初のメソッドで " 添え字が範囲外 " というエラーが発生します。 さて、早速ですが、これを修正して目的を達成するための方法を考えてみましょう。
ステップス
- まず最初に。 のように、最初の方法で を表示させます。 モジュール ウィンドウに表示されます。
- 次に、最初のコードに次の行を追加します。
Our_Array = Application.Transpose(Our_Array) ReDim Preserve Our_Array(1 To 3, 1 To 4) Our_Array = Application.Transpose(Our_Array) Our_Array(4, 1) = "Monica" Our_Array(4, 2) = 26 Our_Array(4, 3) = "New Mexico" Range("C6:E9").Value = Our_Array
- さらに、最終的なメソッドのコードは次のようになります。
Option Explicit Sub ReDim_Preserve_2D_Array_Both_Dimensions() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 ReDim Preserve Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Our_Array = "テキサス "です.Application.Transpose(Our_Array) ReDim Preserve Our_Array(1 To 3, 1 To 4) Our_Array = Application.Transpose(Our_Array) Our_Array(4, 1) = "Monica" Our_Array(4, 2) = 26 Our_Array(4, 3) = "New Mexico" Range("C6:E9").Value = Our_Array End Sub.
VBAのコードブレイクダウン
- まず サブプロシジャ " ReDim_Preserve_2D_Array_Both_Dimensions ".
- その後、残りのコードまでを VBA トランスポーズ 関数は、最初のコードと同じです。
- ここでは、配列を転置しています。
- そして、配列の上辺を増やしていくのです。
- その後、再度、配列の転置を行うので、最終的には下限値を変更することになります。
- 次に、古いデータを保持したまま、リサイズした配列の値を入力します。
- 最後に、セル範囲に値を書き込みます。 C6:E9 .
- その後です。 のように、最初の方法で , 実行 このコード
- このように、このコードで、どのように 2次元配列 を使用して、" リディムプリザーブ " と、その VBA トランスポーズ 関数を使用します。
続きを読む VBAでExcelの配列を転置する(3つの方法)
覚えておきたいこと
- リディムプリザーブ は配列の下限を変更することはできません。 そのためには,配列の下限を変更するために トランスポーズ 関数を使用します。
- のみを使用することができます。 ReDim をダイナミックアレイで表示します。
結論
の手軽な方法を2つご紹介しました。 リディムプリザーブ " a 2D 勢揃い これらの方法について何か問題がある場合、または私へのフィードバックがある場合は、以下にコメントしてください。 また、私たちのサイトを訪問することができます。 エクセルウィキ Excel関連の記事をもっと見る。 読んでくれてありがとう。