엑셀 VBA에서 정렬 번호
우리는 숫자를 정렬 엑셀 VBA에서 프로그램을보고 아래.
상황 :
워크 시트에 명령 단추를 놓고 다음 코드 줄을 추가
-
먼저, 우리는 형 정수의 세 가지 변수와 하나의 Range 개체를 선언합니다.
Dim i As Integer, j As Integer, temp As Integer, rng As Range
이것에 대한 / VBA – 예 – currentregion [CurrentRegion]`부동산 : 2. 우리는 우리는`의 링크를 이용해 열 A의 숫자 Range 개체의 RNG를 초기화합니다.
우리가 (우리가 9 개 숫자에 대한 작업이 프로그램을 원하는뿐만 아니라 90 수) 사전에 범위의 정확한 경계를 모를 때 CurrentRegion 유용합니다.
Set rng = Range("A1").CurrentRegion
-
우리는 다음 루프를 들어 두를 시작합니다.
For i = 1 To rng.Count For j = i + 1 To rng.Count
설명 : 첫 번째 두 개의 코드 라인이 난 1~9 및 j는이 = 들어으로 감소되도록 rng.Count 9. 내가 = 들어 1, J = 2, 3, …, 8, 9 I + 1 = 9 같음 확인됩니다.
-
우리는 다음 번호로 첫 번째 숫자를 비교, 제대로 숫자를 정렬합니다. 다음 숫자가 작다면, 우리는 숫자를 교환합니다. 그런 다음 if 문에 다음을 추가합니다.
If rng.Cells(j) < rng.Cells(i) Then End If
위의 진술이 사실이라면, 우리는 숫자를 교환합니다.
예를 들어 I = 1과 J = 2을 위해, 번호 2 및 10와 비교되고있다. 위의 문장은 사실이 아니다. 따라서, 필요가 숫자를 교환 없습니다. 난 그래서 여전히 숫자를 교환 할 필요가 1, J = 3. 쉽게 (5)는 2보다 큰 것을 볼 수 = 없습니다 1로 엑셀 VBA 증가 J와 코드 라인을 반복합니다. 우리는 J = 4, J에 대해 동일한 결과를 얻을 수 = 5, J = 우리가 J = 7에 도착하면 1이 2보다 작으므로, 위의 문장이 참 6
-
우리는스왑숫자. 우리는 일시적으로 엑셀 VBA 제대로 번호를 교환 할 수 있도록하는 것이, 온도에 하나 개의 번호를 저장합니다. If 문에 다음 코드 줄을 추가합니다.
'swap numbers temp = rng.Cells(i) rng.Cells(i) = rng.Cells(j) rng.Cells(j) = temp
-
우리는합니다 (if 문 밖에서) 다음 루프에 대한 두 번째를 닫습니다.
Next j
i가 1, J = 7 = 들어 엑셀 VBA는 숫자를 교환. 우리가 지금까지 제 위치에 1이 그 위치 7에서 제 위치에 1을 얻을 2 수단, 우리는도 5 및도 4 (j = 8) (j 용 = 9)과이 값을 비교하는 것이다. 숫자를 (1 작은 수입니다) 교환 할 필요가 없습니다.
제 위치에 작은 번호 (i = 1의 경우)이 방법은 엑셀 VBA 얻는다. i가 제 3 위치에 제 최소 수를 얻기 위해서는 2 = 대한 두 번째 위치에서 두 번째 최소의 수를 얻기 위해 엑셀 VBA는 동일한 단계를 반복 난 등 = 3은 Excel VBA는 || 동일한 단계를 반복 ||| 닫기 7.합니다 (if 문 외부) 다음 루프의 첫 번째.
프로그램을 테스트 8..
Next i
결과 :