エクセルVBAでソート番号
我々は数字を並べ替えエクセルVBAでプログラムを見て下記。
状況:
ワークシート上のコマンドボタンを配置し、次のコード行を追加します。
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.あなたのプログラムをテストします。
結果: