タイトルのテキスト
タイトルのテキスト
タイトルのテキスト
タイトルのテキスト

VBAでの2次元配列のススメ

VBA

t f B! P L

 

パソコンの画像

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つの要素を比較する。

もし順序が逆であれば、それらの要素を交換する。

リストの最後まで到達するまで12を繰り返す。

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次元配列を使った時の利点

VBA2次元配列を使うと、Excelのシート上の表形式のデータを効率的に操作できます。以下は、VBA2次元配列を使うと得られる利点と具体的な使用例です。

データの効率的な処理:

2次元配列を使用すると、Excelのセル範囲のデータを一度に取得できます。これにより、データの効率的な処理が可能になります。

高速な操作:

配列内のデータに直接アクセスすることで、セル単位のアクセスよりも高速にデータを操作できます。

多次元的なデータの表現:

行と列の2つの次元を持つ配列は、表形式のデータを直感的に表現するのに適しています。これにより、行と列の相互関係を考慮した処理が容易になります。

〇まとめ

VBA2次元配列を使う方法をまとめました。

VBAのコードを書いていて、負荷の低い処理なら処理時間などはあまり気にならないかもしれませんが、シート間やブック間を何度も行ったり来たりしてコピペを繰り返す処理などはかなり時間がかかってしまいます。

そんな時はデータを変数に代入することで、一度にコピペをすることができるようになるので、処理時間を何十倍にも短縮させることができます。

VBAのコードを書いていて、処理時間が気になるという人はぜひ使ってみてください。

 

koneka1208

koneka1208

自己紹介

自分の写真
エクセル好きの窓際会社員です。 エクセルの操作法や日々の会社で得た知見などを発信していきます。 よろしくお願いします。

ブログ アーカイブ

連絡フォーム

名前

メール *

メッセージ *

QooQ