/ Excel VBAでの数値の並べ替え/並べ替え

Excel VBAで番号をソートする

以下では、 Excel VBA それ ソート番号.

状況:

ソート番号の例

ワークシートにコマンドボタンを配置し、次のコード行を追加します。

まず、Integer型とRangeオブジェクトの3つの変数を宣言します。

Dim i As Integer, j As Integer, temp As Integer, rng As Range

2。 列Aの数値でRangeオブジェクトrngを初期化します。これにはCurrentRegionプロパティを使用します。 CurrentRegionは、あらかじめ範囲の正確な境界を知ることができないときに便利です(このプログラムは9つの数値だけでなく90の数値に対しても機能します)。

Set rng = Range("A1").CurrentRegion

3. For Nextループを2つ起動します。

For i = 1 To rng.Count
    For j = i + 1 To rng.Count

説明:rng.Countは9に等しいので、最初の2つのコード行はFor i = 1〜9に、For j = i + 1〜9に縮小されます。i = 1、j = 2,3、...、8,9チェックされます。

4.数字を適切にソートするには、最初の数字と次の数字を比較します。次の数字が小さい場合は、数字を入れ替えます。次のIf Thenステートメントを追加します。

If rng.Cells(j) < rng.Cells(i) Then

End If

上記のステートメントが真であれば、番号を入れ替えます。

例えば: i = 1およびj = 2の場合、数字2および10が比較されている。上記の陳述は真実ではありません。したがって、番号を交換する必要はありません。 Excel VBAはjを1だけインクリメントし、i = 1およびj = 3のコード行を繰り返します.5が2より大きいので、数字を入れ替える必要はありません。 j = 4、j = 5、j = 6についても同じ結果が得られます.j = 7に到達すると、1は2より小さいので上記の文は真です。

5.番号を交換します。一時的に1つの数値をtempに格納するので、Excel VBAは数値を適切にスワップできます。 Ifステートメントに次のコード行を追加します。

"swap numbers
temp = rng.Cells(i)
rng.Cells(i) = rng.Cells(j)
rng.Cells(j) = temp

6. 2番目のFor Nextループ(Ifステートメントの外側)を閉じます。

Next j

i = 1およびj = 7の場合、Excel VBAは数字。これは、最初の位置に1を、位置7に2を取得することを意味します。最初の位置に1があるので、この値を5(j = 8の場合)と4(j = 9の場合)と比較します。スワップする必要はありません(1が最小です)。このようにして、Excel VBAは最初の位置で最小の数を取得します(i = 1の場合)。 2番目の位置で2番目に小さい番号を取得するには、Excel VBAはi = 2の場合と全く同じ手順を繰り返します。3番目の位置で3番目に小さい番号を取得するには、Excel VBAはi = 3などと全く同じ手順を繰り返します。

7.最初のFor Nextループ(Ifステートメントの外側)を閉じます。

Next i

8.プログラムをテストします。

結果:

Excel VBAで番号をソートする

また読む: