〇 2次元配列とは
VBAでの2次元配列は、表のような構造を持つ変数です。通常、Excelシートのセル範囲を取り込んだり、計算結果を格納したりするのに利用されます。2次元配列は、行と列の2つの次元を持っており、arr(row, column)のように指定して要素にアクセスします。
〇使い方のまとめ
・ 2次元配列の宣言と初期化
2次元配列を宣言する方法は以下の通りです。
Dim myArray As Variant
このようにして宣言した後、データを代入することができます。
myArray = Range("A1:C3").Value
これで、シート上のA1からC3のセル範囲のデータがmyArrayに代入されます。
・2次元配列の要素にアクセス
2次元配列の特定の要素にアクセスするには、行と列のインデックスを指定します。
Dim value As Variant
value = myArray(2, 3) ' 2行目、3列目の要素を取得
・2次元配列の操作と処理
データの変更・書き込み
myArray(1, 2) = "新しいデータ" ' 1行目、2列目のデータを変更
・データの処理
3列目の合計を計算する例
Dim total As Double
For i = 1 To UBound(myArray, 1)
total = total + myArray(i, 3)
Next i
・フィルタリング
' 2列目が特定の値の行を抽出する例
Dim filteredData As Variant
Dim rowCount As Integer: rowCount = 0
For i = 1 To UBound(myArray, 1)
If myArray(i, 2) = "条件に合った値" Then
rowCount = rowCount + 1
ReDim Preserve filteredData(1 To rowCount, 1 To UBound(myArray, 2))
For j = 1 To UBound(myArray, 2)
filteredData(rowCount, j) = myArray(i, j)
Next j
End If
Next i
〇 バブルソートを使ったソート
バブルソート(Bubble Sort)は、基本的なソートアルゴリズムの一つです。このアルゴリズムは、隣り合った要素を比較し、順序が逆であれば交換を行います。これをリスト全体にわたって繰り返すことで、最大の要素がリストの最後に移動するという特徴があります。
アルゴリズムの動作は以下のようになります:
リストの先頭から隣り合った2つの要素を比較する。
もし順序が逆であれば、それらの要素を交換する。
リストの最後まで到達するまで1と2を繰り返す。
1回の走査が終わると、最大の要素がリストの最後に移動する。
未ソート部分のリストが残っている場合、1から4を繰り返す。
このアルゴリズムは理解しやすく実装が比較的単純であるため、教育目的などで使用されることがあります。ただし、効率が悪いため、大きなデータセットに対しては他の高速なソートアルゴリズムが一般的に選択されます。
以下がそのコードです。
Sub BubbleSort(ByRef arr As Variant, ByVal sortColumn
As Integer)
'
バブルソートを実行
Dim i As Integer, j As Integer
Dim temp As Variant
For i = 1 To UBound(arr, 1) - 1
For j = i + 1 To UBound(arr, 1)
If arr(i, sortColumn) > arr(j, sortColumn) Then
' 要素の入れ替え
For k = 1 To UBound(arr, 2)
temp = arr(i, k)
arr(i, k) = arr(j, k)
arr(j, k) = temp
Next k
End If
Next j
Next i
End Sub
これらが、基本的なVBAでの2次元配列の使い方の例です。2次元配列はデータの表現や処理に非常に役立ちます。必要に応じて、これらの基本的な概念を拡張して応用することができます。
〇2次元配列を使った時の利点
VBAで2次元配列を使うと、Excelのシート上の表形式のデータを効率的に操作できます。以下は、VBAで2次元配列を使うと得られる利点と具体的な使用例です。
データの効率的な処理:
2次元配列を使用すると、Excelのセル範囲のデータを一度に取得できます。これにより、データの効率的な処理が可能になります。
高速な操作:
配列内のデータに直接アクセスすることで、セル単位のアクセスよりも高速にデータを操作できます。
多次元的なデータの表現:
行と列の2つの次元を持つ配列は、表形式のデータを直感的に表現するのに適しています。これにより、行と列の相互関係を考慮した処理が容易になります。
〇まとめ
VBAで2次元配列を使う方法をまとめました。
VBAのコードを書いていて、負荷の低い処理なら処理時間などはあまり気にならないかもしれませんが、シート間やブック間を何度も行ったり来たりしてコピペを繰り返す処理などはかなり時間がかかってしまいます。
そんな時はデータを変数に代入することで、一度にコピペをすることができるようになるので、処理時間を何十倍にも短縮させることができます。
VBAのコードを書いていて、処理時間が気になるという人はぜひ使ってみてください。
0 件のコメント:
コメントを投稿