Excel VBA  配列ソートで複数データを一つの配列に格納し並べ替える

 

Excel VBA 配列ソートで、複数のデータを一つの配列に格納し、その配列を並べ替える操作です。VBAでは配列を使ってデータを操作・処理することができますが、配列自体には組み込みのソートメソッドがないため、独自のソート処理を使用する必要があります。具体的な使い方や、注意点やサンプルコードを紹介します。

 

Excel VBA 配列ソートの利用

以下のようなシーンで利用されます。

1.ワークシートから配列にデータを取得し並べ替える
例えば、セルの範囲を配列に取り込み、並べ替えてから再びシートに書き戻す

2.メモリ内での高速処理
シートへの書き込み・読み込みは遅いので、配列内でデータを操作して高速化したいときに便利です。

使い方

ExcelVBAには配列を直接ソートする組み込み関数がないため、自分でバブルソート、クイックソートなどを実装するか、WorksheetFunction.Sortを使ってシートを利用してソートする方法があります。

 

ポイント

1.大規模なデータの処理速度
配列が大きいと、処理速度に影響します。

2.並べ替えロジック
自力で処理を実装する場合は、ロジックの正確さが必要です。特に昇順・降順や、文字列と数値の扱いに注意しましょう。

 

Excel VBA 配列ソートのサンプルコード
配列のソートで数値を昇順にソートする。
Array関数で配列を作成し、配列のソートで数値を昇順に並べ替えます。Debug.Printを使って並べ替え後の配列を確認できます。

Option Explicit

Sub SortArray()
    Dim arr As Variant
    Dim i As Integer, j As Integer
    Dim temp As Variant

    ' 配列に数値を代入
    arr = Array(10, 5, 8, 1, 4)

    ' バブルソートを使って配列を昇順に並べ替える
    For i = LBound(arr) To UBound(arr) - 1
        For j = i + 1 To UBound(arr)
            If arr(i) > arr(j) Then
                temp = arr(i)
                arr(i) = arr(j)
                arr(j) = temp
            End If
        Next j
    Next i

    ' ソート後の配列を表示
    For i = LBound(arr) To UBound(arr)
        Debug.Print arr(i)
    Next i
End Sub

ワークシートのデータを配列に取り込み、配列をソートして再書き込み

Option Explicit

Sub SortArrayFromWorksheet()
    Dim arr As Variant
    Dim i As Long, j As Long
    Dim temp As Variant
    Dim ws As Worksheet

    ' シートからデータを取得(A1:A5の範囲)
    Set ws = ThisWorkbook.Sheets("Sheet1")
    arr = ws.Range("A1:A5").Value

    ' バブルソートを使って配列を昇順に並べ替える
    For i = LBound(arr, 1) To UBound(arr, 1) - 1
        For j = i + 1 To UBound(arr, 1)
            If arr(i, 1) > arr(j, 1) Then
                temp = arr(i, 1)
                arr(i, 1) = arr(j, 1)
                arr(j, 1) = temp
            End If
        Next j
    Next i

    ' 並べ替えたデータをシートに書き戻す
    ws.Range("A1:A5").Value = arr
End Sub

ExcelVBAで配列のソートを行う場合、自分でソートアルゴリズムを実装する必要があります。配列を使用すると、ワークシートに直接操作するよりも効率的にデータを処理できるため、大量のデータや複雑な処理を行う際に役立ちます。

毎日のルーチン作業をExcel VBAで自動化し、時間を有効活用しませんか?Excel VBAエキスパート資格取得問題集を活用して資格取得、そして効率的な仕事を実現しましょう!

VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。

 

Excel  VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。

 

ExcelVBAの学習方法で効果的な学び方を知りたい方は、下記「Excel VBA初心者のための効果的な学習ガイド」をご確認ください。