Сортировка номеров в Excel VBA
Ниже мы рассмотрим программу в Excel VBA, которая сортирует числа.
Ситуация:
Поместите командную кнопку на листе и добавьте строки следующего кода:
-
Во-первых, мы объявляем три переменные типа Integer и один объект Range.
Dim i As Integer, j As Integer, temp As Integer, rng As Range
-
Мы инициализируем объект ГСЧ Range с числами в столбце A. Мы используем
ссылке: / VBA-примеры-CurrentRegion [CurrentRegion]
свойство для этого.
CurrentRegion полезно, когда мы не знаем точных границ диапазона заранее (мы хотим эту программу для работы на 9 номеров, но и для 90 номеров).
Set rng = Range("A1").CurrentRegion
-
Мы начинаем два для следующих петель.
For i = 1 To rng.Count For j = i + 1 To rng.Count
Объяснение: rng.Count равно 9, так что первые две строки кода, чтобы уменьшить Для I = от 1 до 9, и при = + 1 до 9. Для I = 1, J = 2, 3, …, 8 и 9 проверяются.
-
Для сортировки чисел должным образом, мы сравниваем первое число со следующим номером. Если следующий номер меньше, поменять местами цифры. Добавьте следующее заявление If Then.
If rng.Cells(j) < rng.Cells(i) Then End If
Если приведенное выше утверждение верно, то поменять местами цифры.
Например: I = 1 и J = 2, число 2 и 10 сравниваются. Данное заявление не соответствует действительности. Таким образом, нет необходимости менять число. Excel VBA приращений J на 1 и повторяет строки кода для я не = 1 и J = 3. Вы можете легко видеть, что 5 больше, чем 2, так до сих пор нет необходимости поменять номера. Мы получаем тот же результат для j = 4, J = 5 и у = 6. Когда мы приходим к J = 7, приведенное выше утверждение верно, так как 1 меньше 2.
-
Мы
ссылка: / VBA-примеры-своп-значение [своп]
число. Мы временно сохранить один номер для температуры, так что Excel VBA может поменять число правильно. Добавьте следующие строки кода в операторе If.
'swap numbers temp = rng.Cells(i) rng.Cells(i) = rng.Cells(j) rng.Cells(j) = temp
-
Закрывает второй для следующего цикла (за пределами если заявления).
Next j
Для я = 1 и j = 7, Excel VBA местами цифры. Это означает, что мы получаем 1 в первом положении и 2 в положении 7. Теперь, когда мы имеем 1 в первом положении, мы будем сравнивать это значение с 5 (для j = 8) и 4 (для J = 9). Там нет необходимости поменять номера (1 является наименьшим числом).
Таким образом, Excel VBA получает (при г = 1) наименьшее число в первой позиции. Для того, чтобы получить второе наименьшее число во втором положении, Excel VBA повторяет те же самые шаги для я = 2. Для того, чтобы получить третий наименьшее число в третьей позиции, Excel VBA повторяет те же самые шаги для I = 3, и т.д.
-
Закройте первый Для следующего цикла (вне если заявление).
Next i
-
Проверьте свою программу.
Результат: