Sắp xếp dữ liệu ngẫu nhiên 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 dữ liệu một cách ngẫu nhiên (trong ví dụ này là sắp xếp tên ngẫu nhiên).
Tình huống:
-
Đầu tiên, chúng tôi khai báo bốn biến. Một biến kiểu String chúng ta gọi là TempString, một biến kiểu Integer chúng ta gọi là TempInteger, một biến kiểu Integer chúng ta gọi là i, và một biến kiểu Integer chúng ta gọi là j.
Dim tempString As String, tempInteger As Integer, i As Integer, j As Integer
-
Chúng ta viết 5 số ngẫu nhiên vào cột B (mỗi tên một số). Chúng tôi sử dụng hàm trang tính RandBetween cho việc này.
For i = 1 To 5 Cells(i, 2).Value = WorksheetFunction.RandBetween(0, 1000) Next i
Kết quả cho đến nay:
Chúng tôi sẽ sử dụng các số bên cạnh mỗi tên để sắp xếp các tên. Tên có số thứ tự thấp nhất, tên có số thứ tự thấp thứ hai, thứ hai,…
-
Chúng tôi bắt đầu một Vòng lặp kép.
For i = 1 To 5 For j = i + 1 To 5
-
Thêm dòng mã sau:
If Cells(j, 2).Value < Cells(i, 2).Value Then
Ví dụ: với i = 1 và j = 2, Wendy và Richard được so sánh. Vì Richard có số thấp hơn nên chúng tôi đổi Wendy và Richard. Richard hiện đang ở vị trí đầu tiên. Đối với i = 1 và j = 3, Richard và Joost được so sánh.
Joost có số cao hơn nên không có gì xảy ra. Bằng cách này, Excel VBA nhận được tên có số thấp nhất ở vị trí đầu tiên. Đối với i = 2, Excel VBA nhận được tên có số thấp thứ hai ở vị trí thứ hai, v.v.
-
Nếu đúng, chúng tôi
liên kết: / vba -amples-swap-values [swap]
các tên.
tempString = Cells(i, 1).Value Cells(i, 1).Value = Cells(j, 1).Value Cells(j, 1).Value = tempString
-
Và chúng tôi hoán đổi các con số.
tempInteger = Cells(i, 2).Value Cells(i, 2).Value = Cells(j, 2).Value Cells(j, 2).Value = tempInteger
-
Đừng quên đóng câu lệnh If.
End If
-
Đừng quên đóng hai vòng.
Next j Next i
-
Chạy thử chương trình.
Kết quả:
Lưu ý: bạn có thể thêm một dòng xóa các số trong cột B. Việc đặt số của mỗi tên trong một mảng thậm chí còn đẹp hơn, vì vậy không có số nào được đặt trên trang tính của bạn. Tuy nhiên, vì mục đích minh họa, chúng tôi đã chọn để đặt các giá trị trên trang tính.