Ниже мы рассмотрим программу в Excel VBA, которые случайным образом сортирует данные (в данном примере случайным образом сортирует имена).

Ситуация:

Randomly Sort Data in Excel VBA

  1. Во-первых, мы объявляем четыре переменные. Одна переменная типа String, которую мы называем TempString, одна переменная типа Integer мы называем TempInteger, одна переменная типа Integer мы называем I, и одна переменная типа Integer мы называем J.

Dim tempString As String, tempInteger As Integer, i As Integer, j As Integer
  1. Обозначим через 5 случайных чисел в столбце В (по одному для каждого имени). Мы используем функцию рабочего листа RANDBETWEEN для этого.

For i = 1 To 5

Cells(i, 2).Value = WorksheetFunction.RandBetween(0, 1000)

Next i

Результат до сих пор:

Result so far

Мы будем использовать номера рядом с каждым именем, чтобы отсортировать имена. Имя с наименьшим номером первого, имя со вторым наименьшим номером, второй и т.д.

  1. Мы начинаем двойную петлю.

For i = 1 To 5

For j = i + 1 To 5
  1. Добавьте следующую строку кода:

If Cells(j, 2).Value < Cells(i, 2).Value Then

Пример: при г = 1 и J = 2, Венди и Ричард сравниваются. Поскольку Ричард имеет меньшее число, мы переставляем Венди и Ричард. Ричард находится на первой позиции в настоящее время. При г = 1 и J = 3, Ричард и Йост сравниваются.

Joost имеет большее число так ничего не происходит. Таким образом, Excel VBA получает имя с наименьшим номером на первой позиции. Для я = 2, Excel VBA получает имя с вторым наименьшим номером на второй позиции и т.д.

  1. Если это правда, мы ссылка: / VBA-примеры замена-значение [своп] имена.

tempString = Cells(i, 1).Value

Cells(i, 1).Value = Cells(j, 1).Value

Cells(j, 1).Value = tempString
  1. И мы переставляем номера.

tempInteger = Cells(i, 2).Value

Cells(i, 2).Value = Cells(j, 2).Value

Cells(j, 2).Value = tempInteger
  1. Не забудьте закрыть, если заявление.

End If
  1. Не забудьте закрыть две петли.

Next j

Next i
  1. Тест программы.

Результат:

Randomly Sort Data Result

Примечание: Вы можете добавить строку, которая удаляет число в столбце B. Это даже лучше, чтобы поместить числа каждого имени в массиве, так что никаких цифр не помещаются на листе. Однако для иллюстративных целей мы выбрали, чтобы поместить значения на листе.