我々は数字を並べ替えエクセルVBAでプログラムを見て下記。

状況:

Sort Numbers Example

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

1.まず、我々はInteger型の三つの変数と1つのRangeオブジェクトを宣言します。

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

このため/ VBA-例-currentregion [CurrentRegion] `性:2.我々は`リンクを使用して列A内の数字と範囲オブジェクトRNGを初期化します。

CurrentRegionは、我々は(我々が9つの数字のためだけでなく、90個の数字のために仕事にこのプログラムをしたい)事前に範囲の正確な境界がわからないときに便利です。

Set rng = Range("A1").CurrentRegion

3.私たちは、次のループのために2を起動します。

For i = 1 To rng.Count

For j = i + 1 To rng.Count

説明:最初の2つのコードの行iが1~9とについてjは=ために減らすようrng.Count 9.私は= 1、J = 2、3、…​、8と9にI + 1 = 9に等しくチェックされます。

4.私たちは、次の番号で最初の数を比較、きちんと数字をソートします。次の番号が小さい場合、我々は数字を入れ替えます。 Thenステートメント場合は、以下を追加します。

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

End If

上記の文は真であるならば、我々は数字を入れ替えます。

例えば:I = 2 1及びjは=ため、番号2及び10が比較されています。上記の文は真ではありません。このように、数字を交換する必要はありません。私はまだ、番号を交換する必要が1とj = 3.あなたは簡単に5が2よりも大きくなっていることがわかりますを=しないため1によってエクセルVBA刻みjとは、コード行を繰り返します。私たちは、J = 7に到着すると1が2よりも小さいので、上記の文は真であるJ = 4、J = 5とj = 6で同じ結果を得る

5.私たち SWAP番号。私たちは、一時的にエクセルVBAが適切に番号を交換できるように、一時に1つの番号を格納します。 Ifステートメントで、次のコード行を追加します。

'swap numbers

temp = rng.Cells(i)

rng.Cells(i) = rng.Cells(j)

rng.Cells(j) = temp

6.私たちは、(if文の外で)次のループのために第二を閉じます。

Next j

私は1とj = 7 =については、ExcelのVBAは、数字を入れ替え。我々は今、我々は最初の位置に1を有することを位置7に第1の位置に1を取得し、2手段、我々は5と4(J = 8の場合)(ただしj = 9)でこの値を比較すること。数字を(1が最も小さい数である)交換する必要はありません。

このようにExcelのVBAは、(i = 1の場合)第1の位置に最小数を取得します。第二の位置で第2の最小数を取得するには、ExcelのVBA iが第三の位置に第三の最小数を取得する2. =ためまったく同じ手順を繰り返すと、Excel VBA iが等、3 =ためのまったく同じ手順を繰り返す

7.(if文の外)次のループのクローズ最初。

Next i

8.あなたのプログラムをテストします。

結果:

Sort Numbers in Excel VBA