多次元配列を並べ替えるには、1次元配列を並べ替える場合とまったく同じ手順を使用できます。
配列をループし、隣接する2つのメンバーの順序が間違っている場合は、それらを入れ替えます。
次のような多次元配列があるとします。
Dim Array(12, 4) String
したがって、たとえば、最後の列で配列を並べ替えるとします。
For index1 = 0 to Array.length - 1
For index2 = 0 to Array.length - 2
If Array(index2, 4) > Array(index2 + 1, 4) Then
// this sorts the last column
Temp4 = Array(index2, 4)
Array(index2, 4) = Array(index2 + 1, 4)
Array(index2 + 1, 4) = Temp4
// and we repeat this swopping pattern for each of the other columns, so they are all sorted in the same way
Temp3 = Array(index2, 3)
Array(index2, 3) = Array(index2 + 1, 3)
Array(index2 + 1, 3) = Temp3
Temp2 = Array(index2, 2)
Array(index2, 2) = Array(index2 + 1, 2)
Array(index2 + 1, 2) = Temp2
Temp1 = Array(index2, 1)
Array(index2, 1) = Array(index2 + 1, 1)
Array(index2 + 1, 1) = Temp1
Temp0 = Array(index2, 0)
Array(index2, 0) = Array(index2 + 1, 0)
Array(index2 + 1, 0) = Temp0
Next
Next
これで、すべての列が最後の列で並べ替えられます。
4つの列が文字列で、1つの列が数値である場合、どのようにソートできるのか疑問に思われるかもしれません。そして、数値の列でソートしたいとします。
あなたはこれを行うことができます
For index1 = 0 to Array.length - 1
For index2 = 0 to Array.length - 2
If CSng(Array(index2, 4)) > CSng(Array(index2 + 1, 4)) Then
// this sorts the last column
Temp4 = Array(index2, 4)
Array(index2, 4) = Array(index2 + 1, 4)
Array(index2 + 1, 4) = Temp4
// and we repeat this swopping pattern for each of the other columns, so they are all sorted in the same way
Temp3 = Array(index2, 3)
Array(index2, 3) = Array(index2 + 1, 3)
Array(index2 + 1, 3) = Temp3
Temp2 = Array(index2, 2)
Array(index2, 2) = Array(index2 + 1, 2)
Array(index2 + 1, 2) = Temp2
Temp1 = Array(index2, 1)
Array(index2, 1) = Array(index2 + 1, 1)
Array(index2 + 1, 1) = Temp1
Temp0 = Array(index2, 0)
Array(index2, 0) = Array(index2 + 1, 0)
Array(index2 + 1, 0) = Temp0
Next
Next
私が行ったのは、データ型を文字列から単一の最後の列に変換してから、前と同じように隣接する値を比較することだけです。
したがって、これは多次元配列を並べ替える非常に基本的な方法であり、文字列と数値を含む混合配列でも機能します。