Случайная Сортировка данных в Excel VBA
Ниже мы рассмотрим программу в Excel VBA, которые случайным образом сортирует данные (в данном примере случайным образом сортирует имена).
Ситуация:
-
Во-первых, мы объявляем четыре переменные. Одна переменная типа String, которую мы называем TempString, одна переменная типа Integer мы называем TempInteger, одна переменная типа Integer мы называем I, и одна переменная типа Integer мы называем J.
Dim tempString As String, tempInteger As Integer, i As Integer, j As Integer
-
Обозначим через 5 случайных чисел в столбце В (по одному для каждого имени). Мы используем функцию рабочего листа RANDBETWEEN для этого.
For i = 1 To 5 Cells(i, 2).Value = WorksheetFunction.RandBetween(0, 1000) Next i
Результат до сих пор:
Мы будем использовать номера рядом с каждым именем, чтобы отсортировать имена. Имя с наименьшим номером первого, имя со вторым наименьшим номером, второй и т.д.
-
Мы начинаем двойную петлю.
For i = 1 To 5 For j = i + 1 To 5
-
Добавьте следующую строку кода:
If Cells(j, 2).Value < Cells(i, 2).Value Then
Пример: при г = 1 и J = 2, Венди и Ричард сравниваются. Поскольку Ричард имеет меньшее число, мы переставляем Венди и Ричард. Ричард находится на первой позиции в настоящее время. При г = 1 и J = 3, Ричард и Йост сравниваются.
Joost имеет большее число так ничего не происходит. Таким образом, Excel VBA получает имя с наименьшим номером на первой позиции. Для я = 2, Excel VBA получает имя с вторым наименьшим номером на второй позиции и т.д.
-
Если это правда, мы
ссылка: / VBA-примеры замена-значение [своп]
имена.
tempString = Cells(i, 1).Value Cells(i, 1).Value = Cells(j, 1).Value Cells(j, 1).Value = tempString
-
И мы переставляем номера.
tempInteger = Cells(i, 2).Value Cells(i, 2).Value = Cells(j, 2).Value Cells(j, 2).Value = tempInteger
-
Не забудьте закрыть, если заявление.
End If
-
Не забудьте закрыть две петли.
Next j Next i
-
Тест программы.
Результат:
Примечание: Вы можете добавить строку, которая удаляет число в столбце B. Это даже лучше, чтобы поместить числа каждого имени в массиве, так что никаких цифр не помещаются на листе. Однако для иллюстративных целей мы выбрали, чтобы поместить значения на листе.