Sắp xếp số trong Excel VBA
Dưới đây chúng ta sẽ xem xét một chương trình trong Excel VBA sắp xếp các số.
Tình huống:
Đặt một nút lệnh trên trang tính của bạn và thêm các dòng mã sau:
-
Đầu tiên, chúng ta khai báo ba biến kiểu Integer và một đối tượng Range.
Dim i As Integer, j As Integer, temp As Integer, rng As Range
CurrentRegion rất hữu ích khi chúng ta không biết trước ranh giới chính xác của một phạm vi (chúng tôi muốn chương trình này hoạt động với 9 số nhưng cũng cho 90 số).
Set rng = Range("A1").CurrentRegion
-
Chúng tôi bắt đầu hai vòng lặp For Next.
For i = 1 To rng.Count For j = i + 1 To rng.Count
Giải thích: rng.Count bằng 9, do đó hai dòng mã đầu tiên giảm xuống For i = 1 to 9 and For j = i + 1 to 9. For i = 1, j = 2, 3, …, 8 and 9 được kiểm tra.
-
Để sắp xếp các số hợp lý, chúng ta so sánh số đầu tiên với số tiếp theo. Nếu số tiếp theo nhỏ hơn, chúng tôi hoán đổi các số. Thêm câu lệnh If Then sau đây.
If rng.Cells(j) < rng.Cells(i) Then End If
Nếu câu trên là đúng, chúng ta hoán đổi các số.
Ví dụ: với i = 1 và j = 2, các số 2 và 10 đang được so sánh. Câu nói trên là không đúng. Do đó, không cần phải hoán đổi các số. VBA trong Excel tăng j lên 1 và lặp lại các dòng mã cho i = 1 và j = 3. Bạn có thể dễ dàng thấy rằng 5 lớn hơn 2, vì vậy vẫn không cần hoán đổi các số. Chúng tôi nhận được kết quả tương tự cho j = 4, j = 5 và j = 6. Khi chúng tôi đến j = 7, câu trên đúng vì 1 nhỏ hơn 2.
-
Chúng tôi
liên kết: / vba -amples-swap-values [swap]
các số. Chúng tôi tạm thời lưu trữ một số thành tạm thời để Excel VBA có thể hoán đổi các số đúng cách. Thêm các dòng mã sau vào câu lệnh If.
'swap numbers temp = rng.Cells(i) rng.Cells(i) = rng.Cells(j) rng.Cells(j) = temp
-
Chúng ta đóng vòng lặp For Next thứ hai (Bên ngoài câu lệnh If).
Next j
Đối với i = 1 và j = 7, Excel VBA đã hoán đổi các số. Điều đó có nghĩa là chúng ta nhận được 1 ở vị trí đầu tiên và 2 ở vị trí 7. Bây giờ chúng ta có 1 ở vị trí đầu tiên, chúng ta sẽ so sánh giá trị này với 5 (cho j = 8) và 4 (cho j = 9). Không cần hoán đổi các số (1 là số nhỏ nhất).
Bằng cách này, Excel VBA nhận được (với i = 1) số nhỏ nhất ở vị trí đầu tiên. Để có số nhỏ thứ hai ở vị trí thứ hai, Excel VBA lặp lại các bước tương tự chính xác cho i = 2. Để có số nhỏ thứ ba ở vị trí thứ ba, Excel VBA lặp lại các bước chính xác tương tự cho i = 3, v.v.
-
Đóng vòng lặp For Next đầu tiên (Bên ngoài câu lệnh If).
Next i
-
Kiểm tra chương trình của bạn.
Kết quả: