#501 | 配列を並べ替えるプロシージャ例 | VBA | |
配列内に代入されているそれぞれの値を比較して昇順に並べ替える、汎用的なプロシージャのサンプルです。 次の「BubbleSortArray」プロシージャでは、引数varArrayで与えられた配列の中身を昇順に並べ替え、結果をその引数として返します。 引数がByRefで宣言されていますので、呼び出し元で与えた配列そのものが並べ替えられてしまうことに注意してください。 Public Sub BubbleSortArray(ByRef varArray As Variant) '概要 : バブルソートを使って配列の要素を昇順に並べ替える '引数 varArray : 並べ替えたい配列 '返り値 : 並べ替え後の配列をそのまま引数として返す Dim iLoop As Integer Dim jLoop As Integer Dim varTemp As Variant '配列の各要素全体のループ For iLoop = 0 To UBound(varArray) 'ひとつの要素と他の要素を比較するループ For jLoop = iLoop + 1 To UBound(varArray) If varArray(iLoop) > varArray(jLoop) Then '他の要素の方が小さかったら配列の中身を入れ替える varTemp = varArray(iLoop) varArray(iLoop) = varArray(jLoop) varArray(jLoop) = varTemp End If Next jLoop Next iLoop End Sub 使用例: Sub test() Dim varArrayTest As Variant Dim iLoop As Integer 'テストデータを配列に代入 varArrayTest = Array(9, 1, 4, 2, 3, 5, 8, 7, 6) '元のデータをイミディエイトウィンドウに出力 Debug.Print "元のデータ" For iLoop = 0 To UBound(varArrayTest) Debug.Print varArrayTest(iLoop), Next iLoop Debug.Print '並べ替えを実行 BubbleSortArray varArrayTest '並べ替え後のデータをイミディエイトウィンドウに出力 Debug.Print "並べ替え後のデータ" For iLoop = 0 To UBound(varArrayTest) Debug.Print varArrayTest(iLoop), Next iLoop End Sub 実行結果: また、文字をテストデータにした場合には、次のようになります。 varArrayTest = Array("き", "お", "え", "う", "い", "あ", "か") 実行結果: ※なおここでは、”バブルソート”のアルゴリズムを使って配列各要素の並べ替えを行っています。これは初歩的な方法で、プログラムは簡単で済みますが、あまり大量のデータ処理には適していません。 |
|||
|
Copyright © T'sWare All rights reserved |