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:

Randomly Sort Data in Excel VBA

  1. Đầ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
  1. 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:

Result so far

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,…

  1. 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
  1. 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.

  1. 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
  1. 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
  1. Đừng quên đóng câu lệnh If.

End If
  1. Đừng quên đóng hai vòng.

Next j

Next i
  1. Chạy thử chương trình.

Kết quả:

Randomly Sort Data Result

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.