こんにちは!大阪市住之江区に拠点を置く会社『縁紡ぐ』の稲垣です。
当社は、Excel、ACCESS、RPAなどのシステム開発や既存ツールを使った業務効率化の提案、また、ITスキルアップのための教育に力を入れています。効率的なビジネス運営を目指している企業様、ITスキルの向上を図りたい企業や個人の方に、最適なご提案をさせていただきます。業務プロセスの改善とITスキルアップをサポートし、共に成長するパートナーでありたいと考えています。
目次
2次元配列の基本的な作成方法
ExcelVBAでは2次元配列を使わずに、何度もセルにアクセスしていると、めっちゃ遅くなります。そこで今回は2次元配列の作り方を紹介します。
配列を繰り返し処理したい場合の方法は、下の記事で紹介しています。
VBAのLBound関数とUBound関数を徹底解説!初心者向けガイド | 合同会社縁紡ぐ
VBAのLBound関数とUBound関数を徹底解説!初心者向けガイド VBA(Visual Basic for Applications)を使う際、配列は大量データを効率的に扱うために必ず使うことになります…
シートから配列を作成する方法
Excelシートの範囲からデータを取得し、2次元配列に格納する方法を紹介します。これは、一番よく使われているパターンだと思います。
Sub ArrayFromSheet()
Dim array As Variant
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1") ' シート名を指定
' シートの範囲を配列に読み込む
array = ws.Range("A1:B3")' A1からB3の範囲を配列に格納
End Sub
固定サイズの配列を宣言する方法
Sub FixedSizeExample()
Dim myArray(1 To 3, 1 To 2) As Variant
End Sub
Sub VariantArrayExample()
Dim myArray(1 To 3, 1 To 2) As Variant
myArray(1, 1) = 1
myArray(1, 2) = ":1です"
myArray(2, 1) = 2
myArray(2, 2) = ":2です"
myArray(3, 1) = 3
myArray(3, 2) = ":3です"
Debug.Print myArray(1, 1)
Debug.Print myArray(1, 2)
Debug.Print myArray(2, 1)
Debug.Print myArray(2, 2)
Debug.Print myArray(3, 1)
Debug.Print myArray(3, 2)
End Sub
実行例
ReDimを使った方法
ReDimは、配列の大きさを変更することができる方法です。
Sub CreateEmptyArrayReDim()
Dim myArray() As Variant ' 動的配列の宣言
Dim rows As Integer
Dim cols As Integer
' 行数と列数を指定
rows = 3
cols = 2
' 配列のサイズを指定
ReDim myArray(1 To rows, 1 To cols)
Debug.Print myArray(1, 1)
Debug.Print myArray(1, 2)
Debug.Print myArray(2, 1)
Debug.Print myArray(2, 2)
Debug.Print myArray(3, 1)
Debug.Print myArray(3, 2)
End Sub
これで配列の作成はできています。ReDimを使った2次元配列の使い方は、下の記事で紹介しています。
Excel VBAでの2次元配列のReDimの使い方|業務効率化に役立つテクニック | 合同会社縁紡ぐ
基本的なReDim使い方(2次元配列) まず、ReDimを使って2次元配列のサイズを動的に変更する方法です。最初に配列のサイズを決めてから、必要に応じてReDim配列を拡張するこ…
まとめ
必要に応じて、これらの方法を使い分けてください。配列はVBAで高速化するためには、必須ですのでぜひ使ってみてくださいね!
記事を書いた人
稲垣
- Excel、ACCESSでのシステム開発が得意
- ITスキルを共有し実践的に学びながら成長する人を見るのが幸せ
- 自家焙煎するほどのコーヒー好き
- 使用言語 VBA、Python、Javascript、Java、HTML、CSS etc.
- 保有資格 Kintoneアソシエイト、日商簿記検定2級、マンション管理士、管理業務主任者、情報セキュリティマネジメント、ExcelVBA etc.
- 業務フロー図の作成や業務時間分析を通して、効率化ポイントを探る人
- お客様にとって本当に良いことかを第一に考える人
コメント