\ ポイント最大11倍! /

VBAの配列、ちゃんと使えてる?便利な使い方を徹底解説!

  • 「VBAで大量のデータを処理したいけど、ループが遅すぎる…」
  • 「配列ってなんとなく難しそうで避けてきた…」
  • 「静的配列と動的配列って何が違うの?」

このような方に向けて書きました。

VBAの配列をうまく使えば、データ処理のスピードが大幅に向上し、コードもスッキリ書けるようになります!

この記事では、配列の基本から実践的なテクニックまで、初心者でもわかるように徹底解説していきます✨

配列とは?VBAにおけるデータのまとめ方

VBAの配列は、複数のデータを1つの変数で管理する仕組みです。大量のデータを扱う際、個別の変数を使うよりも効率的にデータ処理ができます。

配列の基本

配列は、同じデータ型の値をまとめて扱うための仕組みです。例えば、30人分の点数を管理する場合、個別の変数を使うとコードが煩雑になりますが、配列を使えばスッキリと管理できます。

Dim scores(29) As Integer ' 30人分の点数を格納する配列

このように、scores という配列を作成し、0から29までの要素を持たせることができます。

VBAの配列の種類と使い方

VBAには大きく分けて「静的配列」と「動的配列」の2種類があります。それぞれの特徴と使い方を見ていきましょう。

静的配列(要素数が固定の配列)

静的配列は、宣言時に要素数を指定し、それを変更できない配列です。

Dim cities(4) As String ' 5つの都市名を格納
cities(0) = "東京"
cities(1) = "大阪"
cities(2) = "名古屋"
cities(3) = "福岡"
cities(4) = "札幌"

静的配列は、要素数が決まっている場合に使うと便利です。

動的配列(サイズを変更できる配列)

動的配列は、必要に応じてサイズを変更できる配列です。

Dim cities() As String ' 動的配列を宣言
ReDim cities(4) ' 要素数を5に設定
cities(0) = "東京"
cities(1) = "大阪"
cities(2) = "名古屋"
cities(3) = "福岡"
cities(4) = "札幌"

さらに、ReDim Preserve を使うと、データを保持したままサイズを変更できます。

ReDim Preserve cities(5) ' 1つ増やしてデータを保持
cities(5) = "仙台"

配列の活用術!VBAでデータを効率的に処理する

配列を使うと、VBAの処理を大幅に高速化できます。ここでは、ループ処理の最適化や配列のコピー方法など、実践的なテクニックを紹介します。

配列をループで処理する

配列の要素を一括処理するには、ForループやFor Eachループを使います。

Dim i As Integer
For i = LBound(cities) To UBound(cities)
    Debug.Print cities(i)
Next i

ここで、LBound は配列の最小インデックス、UBound は最大インデックスを取得する関数です。

配列のコピー

配列のコピーをするには、各要素を個別に代入するか、Array関数を使います。

Dim originalArray() As String
Dim copiedArray() As String

originalArray = Array("A", "B", "C")
copiedArray = originalArray ' これは参照コピー(元が変わると影響する)

独立したコピーを作成する場合は、各要素をループでコピーします。

Dim i As Integer
ReDim copiedArray(LBound(originalArray) To UBound(originalArray))
For i = LBound(originalArray) To UBound(originalArray)
    copiedArray(i) = originalArray(i)
Next i

大量データを配列で高速処理する

VBAで大量データを処理する場合、配列を活用すると劇的に速度が向上します。

シートのデータを配列に読み込んで処理する

セルを直接操作するのではなく、一度配列に取り込んで処理し、最後にまとめて書き戻すことで、高速化できます。

Dim data As Variant
Dim i As Long

' シートのデータを配列に格納
data = Range("A1:B50000").Value

' 配列内でデータを処理
For i = 1 To UBound(data, 1)
    data(i, 3) = data(i, 1) * data(i, 2)
Next i

' 処理結果をシートに書き戻し
Range("A1:C50000").Value = data

この方法なら、処理速度が大幅に向上します!🚀

まとめ:VBAの配列を使いこなそう!

VBAの配列を使うと、データ処理の効率がアップし、コードがシンプルになります。

基本から応用までしっかり理解し、実践してみてください!💪

  • ✅ 配列を使うと、大量データを効率よく扱える!
  • ✅ 静的配列と動的配列を使い分ける!
  • ✅ 配列を活用するとVBAの処理速度が劇的に向上する!

配列をマスターして、VBAスキルをワンランクアップさせましょう!🔥

この記事が気に入ったら
フォローしてね!

シェア・記事の保存はこちら!

この記事を書いた人

CFXLOGのアバター CFXLOG プログラマ

メイン言語はPython。本ブログでは、実務や普段の学習で学んだことをアウトプットしています。
基本情報技術者試験合格者。

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)