Ниже мы рассмотрим программу на Excel VBA тот произвольно сортирует данные (в этом примере имена сортируются случайным образом).
Ситуация:
1. Сначала мы объявляем четыре переменные. Одну переменную типа String мы называем TempString, одну переменную типа Integer мы называем TempInteger, одну переменную типа Integer мы называем i, а одну переменную типа Integer мы называем j.
Dim tempString As String, tempInteger As Integer, i As Integer, j As Integer
2. Записываем 5 случайных чисел в столбец B (по одному на каждое имя). Для этого мы используем функцию рабочего листа RandBetween.
Для i = от 1 до 5
Ячейки (i, 2) .Value = WorksheetFunction.RandBetween (0, 1000)
Далее я
Результат на данный момент:
Мы будем использовать числа рядом с каждым именем для сортировки имен. Имя с наименьшим номером первым, имя со вторым наименьшим номером, вторым и т. Д.
3. Начинаем двойную петлю.
Для i = от 1 до 5
Для j = i + от 1 до 5
4. Добавьте следующую строку кода:
Если Cells (j, 2) .Value <Cells (i, 2) .Value Then
Пример: для i = 1 и j = 2 сравниваются Венди и Ричард. Поскольку у Ричарда меньшее число, мы меняем Венди и Ричарда. Ричард сейчас на первой позиции. Для i = 1 и j = 3 сравниваются Ричард и Джуст. У Йоста номер больше, поэтому ничего не происходит. Таким образом, Excel VBA получает имя с наименьшим номером в первой позиции. Для i = 2 Excel VBA получает имя со вторым наименьшим числом во второй позиции и т. Д.
5. Если true, мы меняем имена местами.
tempString = Ячейки (i, 1). Значение
Cells (i, 1) .Value = Cells (j, 1) .Value
Ячейки (j, 1) .Value = tempString
6. И мы меняем местами номера.
tempInteger = Cells (i, 2) .Value
Ячейки (i, 2) .Значение = Ячейки (j, 2) .Значение
Ячейки (j, 2) .Value = tempInteger
7. Не забудьте закрыть оператор If.
Конец, если
8. Не забудьте закрыть две петли.
Следующий j
Далее я
9. Протестируйте программу.
Результат:
Примечание: вы можете добавить строку, которая удаляет числа в столбце B. Еще лучше разместить номера каждого имени в массиве, чтобы числа не помещались на ваш рабочий лист. Однако для наглядности мы решили разместить значения на листе.