Excel VBAで2次元配列をReDimして保存する方法(2つの簡単な方法)

  • これを共有
Hugh West

配列とは、同じ種類のデータを保持する変数のことです。 データが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関連の記事をもっと見る。 読んでくれてありがとう。

Hugh West は、業界で 10 年以上の経験を持つ、非常に経験豊富な Excel トレーナー兼アナリストです。彼は会計と財務の学士号と経営管理の修士号を取得しています。ヒューは教えることに情熱を持っており、理解しやすい独自の教育アプローチを開発しました。彼の Excel に関する専門知識は、世界中の何千人もの学生や専門家がスキルを向上させ、キャリアで優れた成果を上げるのに役立ってきました。 Hugh はブログを通じて知識を世界に共有し、個人や企業が潜在能力を最大限に発揮できるよう無料の Excel チュートリアルとオンライン トレーニングを提供しています。