Произвольная сортировка данных в Excel VBA - макросы Easy Excel

Содержание

Ниже мы рассмотрим программу на 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. Еще лучше разместить номера каждого имени в массиве, чтобы числа не помещались на ваш рабочий лист. Однако для наглядности мы решили разместить значения на листе.

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave