VBAは、長年にわたってMicrosoft Officeスイートの一部でした。 VBAは、完全なVBアプリケーションのすべての機能とパワーを備えていませんが、OfficeユーザーにOffice製品を統合し、それらで行う作業を自動化する柔軟性を提供します。
最も強力なツールの1つVBAで利用できるのは、データの全範囲を配列と呼ばれる単一の変数にロードする機能です。この方法でデータをロードすることにより、さまざまな方法でその範囲のデータを操作または計算できます。
VBAアレイとは何ですか?この記事では、その質問に答え、独自のVBAスクリプト で使用する方法を示します。
VBAアレイとは
VBAの使用Excelの配列は非常にシンプルですが、配列の概念を理解するのは、一度も使用したことがない場合は少し複雑になる可能性があります。
内部にセクションがあるボックスのような配列を考えてください。 1次元配列は、1行のセクションを持つボックスです。 2次元配列は、2行のセクションを持つボックスです。
この「ボックス」の各セクションには、好きな順序でデータを入れることができます。
<!-In_content_1 all:[300x250] / dfp:[640x360]->
VBAスクリプトの最初に、VBA配列を定義してこの「ボックス」を定義する必要があります。したがって、1組のデータを保持できる配列(1次元配列)を作成するには、次の行を記述します。
Dim arrMyArray(1 To 6) As String
後でプログラムに配置できます括弧内のセクションを参照して、この配列の任意のセクションにデータを追加します。
arrMyArray(1) = "Ryan Dube"
次の行を使用して、2次元配列を作成できます。
Dim arrMyArray(1 To 6,1 to 2) As Integer
最初の数字は行を表し、2番目の数字は列を表します。したがって、上記の配列は6行2列の範囲を保持できます。
次のように、この配列の任意の要素にデータをロードできます。
arrMyArray(1,2) = 3
これにより、3がセルB1にロードされます。
配列は、文字列、ブール、整数、浮動小数点数など、任意のタイプのデータを通常の変数として保持できます。
括弧内の数値も変数にすることができます。プログラマは通常、Forループを使用して配列のすべてのセクションをカウントし、スプレッドシートのデータセルを配列に読み込みます。これを行う方法については、この記事の後半で説明します。
ExcelでVBA配列をプログラムする方法
情報をロードする簡単なプログラムを見てみましょう。スプレッドシートから多次元配列に。
例として、営業担当者の名前、アイテム、および総売上をスプレッドシートから引き出したい製品販売スプレッドシートを見てみましょう。
>VBAでは、行または列を参照するときに、左上の1から行と列 をカウントすることに注意してください。したがって、担当者列は3、アイテム列は4、合計列は7。
これらの3つの列を11行すべてにロードするには、次のスクリプトを記述する必要があります。
Dim arrMyArray(1 To 11, 1 To 3) As String
Dim i As Integer, j As Integer
For i = 2 To 12
For j = 1 To 3
arrMyArray(i-1, j) = Cells(i, j).Value
Next j
Next i
ヘッダー行をスキップするには、最初のForルックの行番号が1ではなく2で始まる必要があることに気付くでしょう。これは、ロードするときに配列行の値から1を引く必要があることを意味しますCells(i、j).Valueを使用してセル値を配列に挿入します。
VBA配列スクリプトを挿入する場所
ExcelでVBAスクリプトをプログラムに配置するには、 VBAエディター。これにアクセスするには、[開発者]メニューを選択し、リボンの[コントロール]セクションで[コードを表示]を選択します。
メニューに開発者が表示されない場合は、以下を行う必要があります。それを追加します。これを行うには、[ファイル]および[オプション]を選択して[Excelオプション]ウィンドウを開きます。
選択コマンドをドロップダウンからすべてのコマンドに変更します。左側のメニューから[開発者]を選択し、[追加]ボタンを選択して右側のペインに移動します。チェックボックスをオンにして有効にし、[OK]を選択して終了します。
コードエディターウィンドウが開いたら、データが含まれているシートが左ペインで選択されていることを確認します。左側のプルダウンで[ワークシート]を選択し、右側で[有効化]を選択します。これにより、Worksheet_Activate()という新しいサブルーチンが作成されます。
この関数は、スプレッドシートファイルが開かれるたびに実行されます。このサブルーチン内のスクリプトペインにコードを貼り付けます。
このスクリプトは12行を処理し、列3から担当者名、列4からアイテム、列7から合計売上をロードします。
両方のForループが終了すると、2次元配列arrMyArrayには、元のシートから指定したすべてのデータが含まれています。
Excel VBAでの配列の操作
最終販売価格のすべてに5%の消費税を適用するとします。 、そしてすべてのデータを新しいシートに書き込みます。
最初の後に別のForループを追加して、結果を新しいシートに書き込むコマンドを使用します。
For k = 2 To 12
Sheets("Sheet2").Cells(k, 1).Value = arrMyArray(k - 1, 1)
Sheets("Sheet2").Cells(k, 2).Value = arrMyArray(k - 1, 2)
Sheets("Sheet2").Cells(k, 3).Value = arrMyArray(k - 1, 3)
Sheets("Sheet2").Cells(k, 4).Value = arrMyArray(k - 1, 3) * 0.05
Next k
これにより、配列全体がSheet2に「アンロード」され、合計に税額の5%を掛けた行が追加されます。
結果のシートはこのようになります。
ご覧のとおり、ExcelのVBA配列は非常に便利で、その他のExcelのトリック と同じように多用途です。
上記の例は、配列の非常に簡単な使用法です。はるかに大きな配列を作成し、保存したデータに対して並べ替え、平均化、またはその他の多くの機能を実行できます。
実際のクリエイティブを取得したい場合は、2つの配列を作成することもできますセルの範囲を含む 、2つの異なるシートから、各配列の要素間で計算を実行します。
アプリケーションは、あなたの想像力によってのみ制限されます。